Udostępnij za pośrednictwem


Zasób danych (interfejs API REST usługi Azure Data Catalog)

Adnotacja

Dodawanie adnotacji do elementu zawartości.

etag Właściwość jest opcjonalna i jest używana do sterowania współbieżnością.

POST https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysłania żądań do usługi ADC, należy się upewnić, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod demonstrujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa wykazu lub "DefaultCatalog", aby użyć wykazu domyślnego. Ciąg
view_name Nazwa widoku zasobów danych. Ciąg
view_item_id Identyfikator elementu widoku. Ciąg
nested_view_name Nazwa zagnieżdżonego elementu Widoku. Ciąg
api-version Wersja interfejsu API. Ciąg

Przykład: Dodawanie ekspertów

POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/experts?api-version=2016-03-30
Content-Type: application/json
x-ms-client-request-id:   13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ

Treść

{
    "etag": "59085E253E2244A59F664A2F447E675E",
    "properties":
    {
        "fromSourceSystem": false,
        "key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
        "expert":
        {
            "upn": "expert1@contoso.com",
            "objectId": "1111fa019b3945dc97143ebc3ad74cbf"
        },
    }
}

Przykład: dodawanie tagów terminów słownika

POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/termTags?api-version=2016-03-30

Nagłówek

Content-Type: application/json
x-ms-client-request-id:   13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ

Treść

{
    "etag": "59085E253E2244A59F664A2F447E675E",
    "properties":
    {
        "fromSourceSystem": false,
        "key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
        "termId": "https://test.catalog.com/catalogs/DefaultCatalog/glossaries/DefaultGlossary/terms/ed975c9d-2fb2-49a3-b6f2-222389cefd7e",
    }
}

Przykład: Dodawanie tagów terminów kolumn słownika

POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/columnTermTags?api-version=2016-03-30

Nagłówek

Content-Type: application/json
x-ms-client-request-id:   13d9f885…a92d-8a9f8cf9f707
Authorization: Bearer eyJ0eX ... FWSXfwtQ

Treść

{
    "etag": "59085E253E2244A59F664A2F447E675E",
    "properties":
    {
        "fromSourceSystem": false,
        "key": "22c3fa019b3945dc97143ebc3ad74cbf--1111fa019b3945dc97143ebc3ad74cbf",
        "columnName": "Col1",
        "termId": "https://test.catalog.com/catalogs/DefaultCatalog/glossaries/DefaultGlossary/terms/ed975c9d-2fb2-49a3-b6f2-222389cefd7e",
    }
}

Reakcja

Kody stanu

Kod Opis
201 Utworzone. Żądanie zostało spełnione i utworzono nową adnotację.
200 OK. Zaktualizowano istniejącą adnotację.
412 Warunek wstępny nie powiódł się. Żądanie zostało anulowane z powodu niezgodności elementu ETag w co najmniej jednym elemencie.

Content-Type

application/json

Nagłówek

HTTP/1.1 201 Created
x-ms-request-id: 72cf83c0…058f2b2a0c68
Location: https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf

Rejestrowanie lub aktualizowanie

Rejestruje nowy zasób danych lub aktualizuje istniejący, jeśli zasób o tej samej tożsamości już istnieje. Elementy mogą opcjonalnie zawierać wartości ETag, aby umożliwić im optymistyczną kontrolę współbieżności.

Wprowadzenie do przykładu w usłudze GitHub

Żądanie

POST https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}?api-version={api-version}  

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysłania żądań do usługi ADC, należy się upewnić, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod demonstrujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa wykazu lub "DefaultCatalog", aby użyć wykazu domyślnego. Ciąg
view_name Nazwa widoku zasobów danych. Ciąg
api-version Wersja interfejsu API. Ciąg

Przykład POST

POST https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables?api-version=2016-03-30  

Nagłówek

Content-Type: application/json    
x-ms-client-request-id: 13c45c14…46ab469473f0    
Authorization: Bearer eyJ0eX ... FWSXfwtQ

Przykład treści

{  
    "roles": [  
        {  
            "role": "Contributor",  
            "members": [  
                {  
                    "objectId": "00000000-0000-0000-0000-000000000201"  
                }  
            ]  
        }  
    ],  
    "properties": {  
        "fromSourceSystem": true,  
        "name": "Orders",  
        "dataSource": {  
            "sourceType": "SQL Server",  
            "objectType": "Table"  
        },  
        "dsl": {  
            "protocol": "tds",  
            "authentication": "windows",  
            "address": {  
                "server": "MyServer.contoso.com",  
                "database": "NORTHWND",  
                "schema": "dbo",  
                "object": "Orders"  
            }  
        },  
        "lastRegisteredBy": {  
            "upn": "user1@contoso.com",  
            "firstName": "User1FirstName",  
            "lastName": "User1LastName"  
        },  
        "containerId": "containers/3b2c00be-...-1f15367f54e4"  
    },  
    "annotations": {  
        "schema": {  
            "roles": [  
                {  
                    "role": "Contributor",  
                    "members": [  
                        {  
                            "objectId": "00000000-0000-0000-0000-000000000201"  
                        }  
                    ]  
                }  
            ],  
            "properties": {  
                "fromSourceSystem": true,  
                "columns": [  
                    {  
                        "name": "OrderID",  
                        "isNullable": false,  
                        "type": "int",  
                        "maxLength": 4,  
                        "precision": 10  
                    },  
                    {  
                        "name": "CustomerID",  
                        "isNullable": true,  
                        "type": "nchar",  
                        "maxLength": 10,  
                        "precision": 0  
                    },  
                    {  
                        "name": "EmployeeID",  
                        "isNullable": true,  
                        "type": "int",  
                        "maxLength": 4,  
                        "precision": 10  
                    },  
                    {  
                        "name": "OrderDate",  
                        "isNullable": true,  
                        "type": "datetime",  
                        "maxLength": 8,  
                        "precision": 23  
                    }  
                ]  
            }  
        }  
    }  
}  

Reakcja

Kody stanu

Kod Opis
200 OK. Zaktualizowano istniejący zasób.
201 Utworzone. Żądanie zostało spełnione i utworzono nowy zasób.
412 Warunek wstępny nie powiódł się. Żądanie zostało anulowane z powodu niezgodności elementu ETag w co najmniej jednym elemencie.

Content-Type

application/json

Nagłówek

HTTP/1.1 201 Created  
x-ms-request-id: 72cf83c0…058f2b2a0c68  
Location: https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0…1be45ecd462a  

Obsługiwane źródła danych

Aby uzyskać listę obecnie obsługiwanych obiektów źródeł danych, zapoznaj się z tematem Azure Data Catalog obsługiwanych źródeł danych.

Przykład

W tym przykładzie pokazano, jak uzyskać Azure AD token dostępu i wykonać operację Rejestrowanie.

Uwaga W tym przykładzie użyto słowa kluczowego DefaultCatalog w celu zaktualizowania domyślnego katalogu użytkownika. Możesz również określić rzeczywistą nazwę katalogu. Aby znaleźć nazwę katalogu, zaloguj się do usługi Azure Data Catalog i wybierz pozycję Użytkownik. Zostanie wyświetlona nazwa wykazu .

using System;  
using System.Net;  
using Microsoft.IdentityModel.Clients.ActiveDirectory;  
using System.IO;  

...  

//To learn how to register a client app and get a Client ID,  
// see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID  
static string clientIDFromAzureAppRegistration = "{clientID}";  

static void Main(string[] args)  
{  
    //Note: This example uses the "DefaultCatalog" keyword to update the user's default catalog.  You may alternately  
    //specify the actual catalog name.  
    string catalogName = "DefaultCatalog";  

    string registerJson = Register(catalogName, OrdersJsonWithEveryoneContributor());  

    Console.ReadLine();  
}  

static AuthenticationResult AccessToken()  
{  
    //Get access token:  
    // To call a Data Catalog REST operation, create an instance of AuthenticationContext and call AcquireToken  
    // AuthenticationContext is part of the Active Directory Authentication Library NuGet package  
    // To install the Active Directory Authentication Library NuGet package in Visual Studio,  
    //  run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.  

    //Resource Uri for Data Catalog API  
    string resourceUri = "https://api.azuredatacatalog.com";  

    //To learn how to register a client app and get a Client ID, see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID     
    string clientId = clientIDFromAzureAppRegistration;  

    //A redirect uri gives AAD more details about the specific application that it will authenticate.  
    //Since a client app does not have an external service to redirect to, this Uri is the standard placeholder for a client app.  
    string redirectUri = "https://login.live.com/oauth20_desktop.srf";  

    // Create an instance of AuthenticationContext to acquire an Azure access token  
    // OAuth2 authority Uri  
    string authorityUri = "https://login.windows.net/common/oauth2/authorize";  
    AuthenticationContext authContext = new AuthenticationContext(authorityUri);  

    // Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint  
    //  AcquireToken takes a Client Id that Azure AD creates when you register your client app.  
    return authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri), PromptBehavior.RefreshSession);  
}  

static string Register(string catalogName, string json)  
{  
    string location = string.Empty;  
    string fullUri = string.Format("https://api.azuredatacatalog.com/catalogs/{0}/views/{1}?api-version=2016-03-30", catalogName, viewType);  

    //Create a POST WebRequest as a Json content type  
    HttpWebRequest request = System.Net.WebRequest.Create(fullUri) as System.Net.HttpWebRequest;  
    request.KeepAlive = true;  
    request.Method = "POST";  
    try  
    {  
        var response = SetRequestAndGetResponse(request, json);  

        //Get the Response header which contains the data asset ID  
        //The format is: tables/{data asset ID}  
        location = httpWebResponse.Headers["Location"];  
    }  
    catch (WebException ex)  
    {  
        Console.WriteLine(ex.Message);  
        Console.WriteLine(ex.Status);  
        if (ex.Response != null)  
        {  
            // can use ex.Response.Status, .StatusDescription  
            if (ex.Response.ContentLength != 0)  
            {  
                using (var stream = ex.Response.GetResponseStream())  
                {  
                    using (var reader = new StreamReader(stream))  
                    {  
                        Console.WriteLine(reader.ReadToEnd());  
                    }  
                }  
            }  
        }  
        location = null;  
    }  
    return location;  
}  

static HttpWebResponse SetRequestAndGetResponse(HttpWebRequest request, string payload = null)  
{  
    while (true)  
    {  
        //To authorize the operation call, you need an access token which is part of the Authorization header  
        request.Headers.Add("Authorization", AccessToken().CreateAuthorizationHeader());  
        //Set to false to be able to intercept redirects  
        request.AllowAutoRedirect = false;  

        if (!string.IsNullOrEmpty(payload))  
        {  
            byte[] byteArray = Encoding.UTF8.GetBytes(payload);  
            request.ContentLength = byteArray.Length;  
            request.ContentType = "application/json";  
            //Write JSON byte[] into a Stream  
            request.GetRequestStream().Write(byteArray, 0, byteArray.Length);  
        }  
        else  
        {  
            request.ContentLength = 0;  
        }  

        HttpWebResponse response = request.GetResponse() as HttpWebResponse;  

        // Requests to **Azure Data Catalog (ADC)** may return an HTTP 302 response to indicate  
        // redirection to a different endpoint. In response to a 302, the caller must re-issue  
        // the request to the URL specified by the Location response header.  
        if (response.StatusCode == HttpStatusCode.Redirect)  
        {  
            string redirectedUrl = response.Headers["Location"];  
            HttpWebRequest nextRequest = WebRequest.Create(redirectedUrl) as HttpWebRequest;  
            nextRequest.Method = request.Method;  
            request = nextRequest;  
        }  
        else  
        {  
            return response;  
            break;  
        }  
    }  
}  

static string OrdersJsonWithEveryoneContributor()  
{  
    return @"  
    {  
        'roles': [  
            {  
                'role': 'Contributor',  
                'members': [  
                    {  
                        'objectId': '00000000-0000-0000-0000-000000000201'  
                    }  
                ]  
            }  
        ],  
        'properties': {  
            'fromSourceSystem': 'true',  
            'name': 'Orders',  
            'dataSource': {  
                'sourceType': 'SQL Server',  
                'objectType': 'Table'  
            },  
            'dsl': {  
                'protocol': 'tds',  
                'authentication': 'windows',  
                'address': {  
                    'server': 'MyServer.contoso.com',  
                    'database': 'NORTHWND',  
                    'schema': 'dbo',  
                    'object': 'Orders'  
                }  
            },  
            'lastRegisteredBy': {  
                'upn': 'user1@contoso.com',  
                'firstName': 'User1FirstName',  
                'lastName': 'User1LastName'  
            },  
            'containerId': 'containers/a9f8a2e1-d826-7c0c-b186-c7f4334a6b4f'  
        },  
        'annotations': {  
            'schema': {  
                'roles': [  
                    {  
                        'role': 'Contributor',  
                        'members': [  
                            {  
                                'objectId': '00000000-0000-0000-0000-000000000201'  
                            }  
                        ]  
                    }  
                ],  
                'properties': {  
                    'fromSourceSystem': 'true',  
                    'columns': [  
                        {  
                            'name': 'OrderID',  
                            'isNullable': false,  
                            'type': 'int',  
                            'maxLength': 4,  
                            'precision': 10  
                        },  
                        {  
                            'name': 'CustomerID',  
                            'isNullable': true,  
                            'type': 'nchar',  
                            'maxLength': 10,  
                            'precision': 0  
                        },  
                        {  
                            'name': 'EmployeeID',  
                            'isNullable': true,  
                            'type': 'int',  
                            'maxLength': 4,  
                            'precision': 10  
                        },  
                        {  
                            'name': 'OrderDate',  
                            'isNullable': true,  
                            'type': 'datetime',  
                            'maxLength': 8,  
                            'precision': 23  
                        }  
                    ]  
                }  
            }  
        }  
    }";  
}  

Pobieranie z adnotacjami

Pobiera zasób danych z adnotacjami.

Obsługuje opcjonalny parametr adc.metadata akceptuj nagłówek, który żąda, aby element ETags został uwzględniony w odpowiedzi dla wszystkich elementów. Użyj wartości minimalnych lub pełnych, aby uzyskać tagi ETag w odpowiedzi. Prawidłowe wartości to none, minimali full.

Żądanie

GET https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}?api-version={api-version}  

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysyłania żądań do usługi ADC, należy upewnić się, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod pokazujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa katalogu lub "DefaultCatalog", aby użyć katalogu domyślnego. Ciąg
view_name Nazwa widoku zasobu danych. Ciąg
view_item_id Identyfikator elementu Widoku. Ciąg
api-version Wersja interfejsu API. Ciąg

Przykład GET

GET https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b...1be45ecd462a?api-version=2016-03-30  

Nagłówek

x-ms-client-request-id: 8091955f…8f5b4c0acede    
Authorization:  Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...    
Accept: application/json;adc.metadata=full  

Reakcja

Kody stanu

Kod Opis
200 OK. Odpowiedź zawiera żądany widok zasobu.

Content-Type

application/json

Nagłówek

x-ms-request-id: 1095e88c…caffabd6dabd  
Content-Type:   application/json; charset=utf-8

Treść

{  
    "id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0-...-1be45ecd462a",  
    "etag": "1234567891",  
    "timestamp": "2015-05-15T03:48:39.2425547",  
    "roles": [  
        {  
            "role": "Contributor",  
            "members": [  
                {  
                    "objectId": "00000000-0000-0000-0000-000000000201"  
                }  
            ]  
        }  
    ],  
    "effectiveRights": [  
        "Read",  
        "Delete",  
        "ChangeOwnership",  
        "ChangeVisibility",  
        "ViewPermissions",  
        "ViewRoles",  
        "Update",  
        "TakeOwnership"  
    ],  
    "properties": {  
        "fromSourceSystem": true,  
    "name": "Orders",  
    "dataSource": {  
        "sourceType": "SQL Server",  
            "objectType": "Table"  
    },  
    "dsl": {  
        "protocol": "tds",  
        "authentication": "windows",  
        "address": {  
            "server": "MyServer.contoso.com",  
            "database": "NORTHWND",  
            "schema": "dbo",  
            "object": "Orders"  
        }  
    },  
    "lastRegisteredBy": {  
        "upn": "user1@contoso.com",  
        "firstName": "User1FirstName",  
        "lastName": "User1LastName"  
    },  
        "containerId": "containers/3b2c00be-...-1f15367f54e4"  
    },  
    "annotations": {  
        "schema": {  
            "id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0-...-1be45ecd462a/schema",  
            "etag": "1234567892",  
            "timestamp": "2015-05-15T03:48:39.2425547",  
            "roles": [  
                {  
                    "role": "Contributor",  
                    "members": [  
        {  
                            "objectId": "00000000-0000-0000-0000-000000000201"  
                        }  
                    ]  
                }  
            ],  
            "effectiveRights": [  
                    "Read",  
                    "Delete",  
                    "ViewRoles",  
                    "Update"  
                ],  
            "properties": {  
                "fromSourceSystem": true,  
            "columns": [  
                {  
                    "name": "OrderID",  
                    "isNullable": false,  
                    "type": "int",  
                    "maxLength": 4,  
                    "precision": 10  
                },  
                {  
                    "name": "CustomerID",  
                    "isNullable": true,  
                    "type": "nchar",  
                    "maxLength": 10,  
                    "precision": 0  
                },  
                {  
                    "name": "EmployeeID",  
                    "isNullable": true,  
                    "type": "int",  
                    "maxLength": 4,  
                    "precision": 10  
                },  
                {  
                    "name": "OrderDate",  
                    "isNullable": true,  
                    "type": "datetime",  
                    "maxLength": 8,  
                    "precision": 23  
                }  
                ]  
        }  
        },  
    "experts": [  
        {  
                "id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/042297b0-...-1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf",  
                "etag": "1234567893",  
                "timestamp": "2015-05-15T03:48:39.2425547",  
                "roles": [  
                    {  
                        "role": "Contributor",  
                        "members": [  
                            {  
                                "objectId": "22c3fa01-9b39-45dc-9714-3ebc3ad74cbf"  
                            }  
                        ]  
                    }  
                ],  
                "effectiveRights": [  
                    "Read",  
                    "Delete",  
                    "ViewRoles",  
                    "Update"  
                ],  
                "properties": {  
                    "fromSourceSystem": false,  
                    "key": "22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf",  
                    "expert": {  
                        "upn": "expert1@contoso.com",  
                        "objectId": "1111fa019b3945dc97143ebc3ad74cbf"  
                    }  
                }  
        }  
    ]  
}  
}

Wyszukuje zasoby danych na podstawie podanych terminów wyszukiwania.

Żądanie

GET https://api.azuredatacatalog.com/catalogs/{catalog_name}/search/search?api-version={api-version}&searchTerms={search_terms}&facets={facet_terms}&startPage={start_page}&count={count}&view={data_source}  

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysyłania żądań do usługi ADC, należy upewnić się, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod pokazujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa katalogu lub "DefaultCatalog", aby użyć katalogu domyślnego. Ciąg
api-version Wersja interfejsu API. Ciąg

Parametry zapytania

Nazwa Opis Typ danych
searchTerms Wymagane. Terminy do wyszukania. Ciąg
Aspekty Opcjonalne nazwy pól rozdzielonych przecinkami do tworzenia aspektów wyników. Ciąg
Startpage Opcjonalna strona początkowa wyników używanych do stronicowania wraz z parametrem count. Dozwolone wartości są większe niż 0, jeśli jest przekazywana wartość mniejsza lub równa 0, zwracany jest błąd HTTP z kodem błędu 400. Ciąg
count Opcjonalna liczba wyników żądanych na jednej stronie (stronicowanie). Wartość domyślna to 10. Dozwolone wartości są w interwałach od 1 do 100 włącznie. Jeśli wartość z tego zakresu zostanie przekazana, zwracany jest błąd HTTP z kodem błędu 400. Aby uzyskać następną część wyników wyszukiwania, powtórz żądanie, ale zwiększ wartość startPage o 1. Liczba całkowita
widok Opcjonalnie pobiera widok, który klient chce zobaczyć, na razie jedyną obsługiwaną opcją w usłudze DataSource. Ciąg

Przykład GET

https://api.azuredatacatalog.com/catalogs/DefaultCatalog/search/search?searchTerms=My_Server&count=10&startPage=1&api-version=2016-03-30

Nagłówek

x-ms-client-request-id: 546f053a…a1612f3a3d69  
Authorization:  Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...  

Reakcja

Kody stanu

Kod Opis
200 OK. Pomyślna operacja z wynikiem wyszukiwania.

Content-Type

application/json

Nagłówek

x-ms-request-id: 0ab2e798…088223257ad2  
Content-Length:  3926

Treść

{  
"query": {  
    "id": "bd067219...4ba9a56e204b",  
    "searchTerms": "My_server",  
    "startIndex": 1,  
    "startPage": 1,  
    "count": 1,  
    "id": "bd067219...4ba9a56e204b",  
    "totalResults": 508,  
    "startIndex": 1,  
    "itemsPerPage": 1,  
    "results": [{  
    "updated": "0001-01-01T00:00:00",  
    "content": {  
          "properties": {  
            "fromSourceSystem": true,  
            "name": "MyTable",  
            "dsl": {  
              "protocol": "tds",  
              "authentication": "windows",  
              "address": {  
                "server": "My_SERVER",  
                "database": "my_DB",  
                "schema": "my_SCHEMA",  
                "object": "my_TABLE"  
              }  
            },  
            "dataSource": {  
              "sourceType": "SQL Server",  
              "objectType": "Table"  
            },  
            "lastRegisteredBy": {  
              "upn": "user1@contoso.com",  
              "firstName": "User1FirstName",  
              "lastName": "User1LastName"  
            },  
            "containerId": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/containers/a9f8a2e1-d826-7c0c-b186-c7f4334a6b4f"  
          },  
          "id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/08d91f0d-26a0-1e8e-ab3b-d463ac3e62cb",  
          "type": "Microsoft.DataSource.Table.1",  
          "timestamp": "2016-03-15T23:20:12.5423855",  
          "annotations": {  
            "schema": {  
              "properties": {  
                "fromSourceSystem": true,  
                "columns": [  
                  {  
                    "name": "ID",  
                    "type": "int",  
                    "maxLength": 4,  
                    "precision": 10,  
                    "isNullable": false  
                  },  
                  {  
                    "name": "Column2",  
                    "type": "nchar",  
                    "maxLength": 10,  
                    "precision": 0,  
                    "isNullable": true  
                  }  
                ]  
              },  
              "id": "https://e2255231-6dd3-1a0d-a6d8-7fc96dd780c2-mycatalog.api.azuredatacatalog.com/catalogs/MyCatalog/views/tables/08d91f0d-26a0-1e8e-ab3b-d463ac3e62cb/schema",  
              "type": "Microsoft.DataSource.Schema.1",  
              "timestamp": "2016-03-15T23:20:12.5423855",  
              "roles": [  
                {  
                  "role": "Contributor",  
                  "members": [  
                    {  
                      "objectId": "00000000-0000-0000-0000-000000000201"  
                    }  
                  ]  
                }  
              ],  
              "effectiveRights": [  
                "Read",  
                "Delete",  
                "ViewRoles",  
                "Update"  
              ]  
            }  
          },  
          "roles": [  
            {  
              "role": "Contributor",  
              "members": [  
                {  
                  "objectId": "00000000-0000-0000-0000-000000000201"  
                }  
              ]  
            }  
          ],  
          "effectiveRights": [  
            "Read",  
            "Delete",  
            "ChangeOwnership",  
            "ChangeVisibility",  
            "ViewPermissions",  
            "ViewRoles",  
            "Update",  
            "TakeOwnership"  
          ]  
        },  
    "hitProperties": [{  
        "fieldPath": "properties.dsl.address.server",  
        "highlightDetail": [{  
            "highlightedWords": [{  
                "word": "My_sERVER"  
            }],  
            "highlightedFragment": "My_sERVER"  
        }]  
    },  
    {  
        "fieldPath": "properties.dataSource.sourceType",  
        "highlightDetail": [{  
            "highlightedWords": [{  
                "word": "Server"  
            }],  
            "highlightedFragment": "SQL Server"  
        }]  
    },  
    {  
        "fieldPath": "properties.dsl.address.object",  
        "highlightDetail": [{  
            "highlightedWords": [{  
                "word": "my"  
            }],  
            "highlightedFragment": "my_TABLE"  
        }]  
    },  
    {  
        "fieldPath": "properties.dsl.address.database",  
        "highlightDetail": [{  
            "highlightedWords": [{  
                "word": "my"  
            }],  
            "highlightedFragment": "my_DB"  
        }]  
    },  
    {  
        "fieldPath": "properties.dsl.address.schema",  
        "highlightDetail": [{  
            "highlightedWords": [{  
                "word": "my"  
            }],  
            "highlightedFragment": "my_SCHEMA"  
        }]  
    }]  
}]  
}

Przykład

W tym przykładzie pokazano, jak uzyskać Azure AD token dostępu i wykonać operację wyszukiwania.

Uwaga Aby znaleźć nazwę katalogu, zaloguj się do usługi Azure Data Catalog i wybierz pozycję Użytkownik. Zostanie wyświetlona nazwa wykazu .

using System;  
using System.Net;  
using Microsoft.IdentityModel.Clients.ActiveDirectory;  
using System.IO;  

...  

//To learn how to register a client app and get a Client ID,  
// see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID  
static string clientIDFromAzureAppRegistration = "{clientID}";  

static void Main(string[] args)  
{  
    //Note: This example uses the "DefaultCatalog" keyword to update the user's default catalog.  You may alternately  
    //specify the actual catalog name.  
    string catalogName = "DefaultCatalog";  

    //Search everything  
    string searchTerm = string.Empty;  

    string searchJson = Search(catalogName, searchTerm);  
    //Other examples "tags:=Sales", "upn:{username}"  

    Console.WriteLine(searchJson);  
}  

static AuthenticationResult AccessToken()  
{  
    //Get access token:  
    // To call a Data Catalog REST operation, create an instance of AuthenticationContext and call AcquireToken  
    // AuthenticationContext is part of the Active Directory Authentication Library NuGet package  
    // To install the Active Directory Authentication Library NuGet package in Visual Studio,  
    //  run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.  

    //Resource Uri for Data Catalog API  
    string resourceUri = "https://api.azuredatacatalog.com";  

    //To learn how to register a client app and get a Client ID, see https://msdn.microsoft.com/library/azure/mt403303.aspx#clientID    
    string clientId = clientIDFromAzureAppRegistration;  

    //A redirect uri gives AAD more details about the specific application that it will authenticate.  
    //Since a client app does not have an external service to redirect to, this Uri is the standard placeholder for a client app.  
    string redirectUri = "https://login.live.com/oauth20_desktop.srf";  

    // Create an instance of AuthenticationContext to acquire an Azure access token  
    // OAuth2 authority Uri  
    string authorityUri = "https://login.windows.net/common/oauth2/authorize";  
    AuthenticationContext authContext = new AuthenticationContext(authorityUri);  

    // Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint  
    //  AcquireToken takes a Client Id that Azure AD creates when you register your client app.  
    return authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri), PromptBehavior.RefreshSession);  
}  

static string Search(string catalogName, string searchTerm)  
{  
    string responseContent = string.Empty;  

    //NOTE: To find the Catalog Name, sign into Azure Data Catalog, and choose User. You will see a list of Catalog names.            
    string fullUri =  
        string.Format("https://api.azuredatacatalog.com/catalogs/{0}/search/search?searchTerms={1}&count=10&api-version=2016-03-30", catalogName, searchTerm);  

    //Create a GET WebRequest  
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUri);  
    request.Method = "GET";  

    try  
    {  
        //Get HttpWebResponse from GET request  
        using (HttpWebResponse httpResponse = SetRequestAndGetResponse(request))  
        {  
            //Get StreamReader that holds the response stream  
            using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))  
            {  
                responseContent = reader.ReadToEnd();  
            }  
        }  
    }  
    catch (WebException ex)  
    {  
        Console.WriteLine(ex.Message);  
        Console.WriteLine(ex.Status);  
        if (ex.Response != null)  
        {  
            // can use ex.Response.Status, .StatusDescription  
            if (ex.Response.ContentLength != 0)  
            {  
                using (var stream = ex.Response.GetResponseStream())  
                {  
                    using (var reader = new StreamReader(stream))  
                    {  
                        Console.WriteLine(reader.ReadToEnd());  
                    }  
                }  
            }  
        }  
        return null;  
    }  

    return responseContent;  
}  

static HttpWebResponse SetRequestAndGetResponse(HttpWebRequest request, string payload = null)  
{  
    while (true)  
    {  
        //To authorize the operation call, you need an access token which is part of the Authorization header  
        request.Headers.Add("Authorization", AccessToken().CreateAuthorizationHeader());  
        //Set to false to be able to intercept redirects  
        request.AllowAutoRedirect = false;  

        if (!string.IsNullOrEmpty(payload))  
        {  
            byte[] byteArray = Encoding.UTF8.GetBytes(payload);  
            request.ContentLength = byteArray.Length;  
            request.ContentType = "application/json";  
            //Write JSON byte[] into a Stream  
            request.GetRequestStream().Write(byteArray, 0, byteArray.Length);  
        }  
        else  
        {  
            request.ContentLength = 0;  
        }  

        HttpWebResponse response = request.GetResponse() as HttpWebResponse;  

        // Requests to **Azure Data Catalog (ADC)** may return an HTTP 302 response to indicate  
        // redirection to a different endpoint. In response to a 302, the caller must re-issue  
        // the request to the URL specified by the Location response header.    
        if (response.StatusCode == HttpStatusCode.Redirect)  
        {  
            string redirectedUrl = response.Headers["Location"];  
            HttpWebRequest nextRequest = WebRequest.Create(redirectedUrl) as HttpWebRequest;  
            nextRequest.Method = request.Method;  
            request = nextRequest;  
        }  
        else  
        {  
            return response;  
            break;  
        }  
    }  
}

Usuń

Usuwa element zawartości danych i wszystkie adnotacje (jeśli istnieją) dołączone do niego.

Obsługuje opcjonalny nagłówek If-Match dla optymistycznej kontrolki współbieżności. Obsługiwany jest tylko słaby format, taki jak W/"123456789".

Żądanie

DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}?api-version={api-version}  

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysłania żądań do usługi ADC, należy się upewnić, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod demonstrujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa wykazu lub "DefaultCatalog", aby użyć wykazu domyślnego. Ciąg
view_name Nazwa widoku zasobów danych. Ciąg
view_item_id Identyfikator elementu widoku. Ciąg
api-version Wersja interfejsu API. Ciąg

Przykład DELETE

DELETE https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a?api-version=2016-03-30

Nagłówek

x-ms-client-request-id: 59b68a46…46dc3ec8dcb8    
Authorization:  Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...    
If-Match: W/"123456789"  

Reakcja

Kody stanu

Kod Opis
204 NoContent
UWAGA: Semantyka operacji usuwania to "delete if exists", więc jeśli element zawartości lub adnotacja nie istnieje kod stanu powodzenia 204 (NoContent) jest zwracany.
412 Warunek wstępny nie powiódł się. Żądanie zostało anulowane z powodu niezgodności elementu ETag.

Content-Type

application/json

Nagłówek

x-ms-request-id: 664f86cf…5e512fa78e92  

Aktualizacja adnotacji

Aktualizacje adnotację.

Elementy mogą opcjonalnie zawierać wartości ETag, aby umożliwić im optymistyczną kontrolę współbieżności.

Żądanie

PUT https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}/{nested_non_singleton_view_item_id}?api-version={api-version} 
 
PUT https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}  

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysłania żądań do usługi ADC, należy się upewnić, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod demonstrujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa wykazu lub "DefaultCatalog", aby użyć wykazu domyślnego. Ciąg
view_name Nazwa widoku zasobów danych. Ciąg
view_item_id Identyfikator elementu widoku. Ciąg
nested_view_name Nazwa zagnieżdżonego widoku. Ciąg
nested_non_singleton_view_item_id Identyfikator zagnieżdżonego elementu bez pojedynczego widoku. Należy podać widok inny niż pojedynczy. Ciąg
api-version Wersja interfejsu API. Ciąg

PRZYKŁAD PUT dla pojedynczego widoku dokumentacji

PUT https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0...1be45ecd462a/documentation?api-version=2016-03-30

Nagłówek

Content-Type:   application/json; charset=utf-8    
x-ms-client-request-id:   059692ee-...-57490fcec42c    
Authorization:  Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...  

Schemat treści

Body:  
    {  
        "fromSourceSystem": false,  
        "etag": "123456789",  
        "content": "<new documentation content>",  
        "mimetype": "text",  
    }  

Reakcja

Kody stanu

Kod Opis
200 OK. Zaktualizowano istniejącą adnotację.
412 Warunek wstępny nie powiódł się. Żądanie zostało anulowane z powodu niezgodności elementu ETag w co najmniej jednym elemencie.

Content-Type

application/json

Nagłówek

x-ms-request-id: 3b8668da…1558d0f407c0  

Usuwanie adnotacji

Usuwa adnotację i wszystkie zagnieżdżone adnotacje (jeśli istnieją).

Obsługuje opcjonalny nagłówek If-Match dla optymistycznej kontroli współbieżności. Obsługiwany jest tylko słaby format, taki jak W/"123456789".

Żądanie

DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}/{nested_non_singleton_view_item_id}?api-version={api-version}  
	
DELETE https://api.azuredatacatalog.com/catalogs/{catalog_name}/views/{view_name}/{view_item_id}/{nested_view_name}?api-version={api-version}  

Uwaga

Niektóre implementacje klienta HTTP mogą automatycznie ponownie wysyłać żądania w odpowiedzi na 302 z serwera, ale zazwyczaj usuwać nagłówki autoryzacji z żądania. Ponieważ nagłówek autoryzacji jest wymagany do wysłania żądań do usługi ADC, należy się upewnić, że nagłówek autoryzacji jest nadal udostępniany podczas ponownego wystawiania żądania do lokalizacji przekierowania określonej przez usługę ADC. Poniżej przedstawiono przykładowy kod demonstrujący to przy użyciu obiektu HttpWebRequest platformy .NET.

Parametry identyfikatora URI

Nazwa Opis Typ danych
Catalog_name Nazwa wykazu lub "DefaultCatalog", aby użyć wykazu domyślnego. Ciąg
view_name Nazwa widoku zasobów danych. Ciąg
view_item_id Identyfikator elementu Widoku. Ciąg
nested_view_name Nazwa zagnieżdżonego widoku. Ciąg
nested_non_singleton_view_item_id Identyfikator zagnieżdżonego elementu widoku innego niż pojedynczy. Należy podać dla widoku innego niż singleton. Ciąg
api-version Wersja interfejsu API. Ciąg

Przykład DELETE

DELETE https://api.azuredatacatalog.com/catalogs/DefaultCatalog/views/tables/042297b0-c187-49cc-8f30-1be45ecd462a/experts/22c3fa019b3945dc97143ebc3ad74cbf-1111fa019b3945dc97143ebc3ad74cbf?api-version=2016-03-30  

Nagłówek

x-ms-client-request-id:   c8da5f08…67b203d77b2d  
Authorization:  Bearer eXJ0eyAiOiJKV1QiLCJhbGciOi...  
If-Match: W/"123456789"  

Reakcja

Kody stanu

Kod Opis
204 NoContent
412 Warunek wstępny nie powiódł się. Żądanie zostało anulowane z powodu niezgodności elementu ETag.

Content-Type

application/json

Nagłówek

x-ms-request-id: 276b9dc4…e5f7017805c