Źródło danych HTTP dla narzędzia rozpoznawania nazw
DOTYCZY: Wszystkie warstwy usługi API Management
Zasady rozpoznawania http-data-source
nazw konfiguruje żądanie HTTP i opcjonalnie odpowiedź HTTP w celu rozpoznania danych dla typu obiektu i pola w schemacie GraphQL. Schemat należy zaimportować do usługi API Management jako interfejs API GraphQL.
Uwaga
Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.
Instrukcja zasad
<http-data-source>
<http-request>
<get-authorization-context>...get-authorization-context policy configuration...</get-authorization-context>
<set-backend-service>...set-backend-service policy configuration...</set-backend-service>
<set-method>...set-method policy configuration...</set-method>
<set-url>URL</set-url>
<include-fragment>...include-fragment policy configuration...</include-fragment>
<set-header>...set-header policy configuration...</set-header>
<set-body>...set-body policy configuration...</set-body>
<authentication-certificate>...authentication-certificate policy configuration...</authentication-certificate>
</http-request>
<backend>
<forward-request>...forward-request policy configuration...</forward-request>
<http-response>
<set-body>...set-body policy configuration...</set-body>
<xml-to-json>...xml-to-json policy configuration...</xml-to-json>
<find-and-replace>...find-and-replace policy configuration...</find-and-replace>
<publish-event>...publish-event policy configuration...</publish-event>
<include-fragment>...include-fragment policy configuration...</include-fragment>
</http-response>
</http-data-source>
Elementy
Nazwa/nazwisko | opis | Wymagania |
---|---|---|
http-request | Określa adres URL i zasady podrzędne, aby skonfigurować żądanie HTTP programu rozpoznawania nazw. | Tak |
zaplecze | Opcjonalnie przekazuje żądanie HTTP programu resolver do usługi zaplecza, jeśli określono. | Nie. |
http-response | Opcjonalnie określa zasady podrzędne, aby skonfigurować odpowiedź HTTP modułu rozpoznawania nazw. Jeśli nie zostanie określona, odpowiedź zostanie zwrócona jako nieprzetworzony ciąg. | Nie. |
Elementy żądania http
Uwaga
Z wyjątkiem przypadków, w których zaznaczono, każdy element podrzędny może być określony co najwyżej raz. Określ elementy w podanej kolejności.
Element | opis | Wymagania |
---|---|---|
get-authorization-context | Pobiera kontekst autoryzacji dla żądania HTTP programu resolver. | Nie. |
set-backend-service | Przekierowuje żądanie HTTP programu resolver do określonego zaplecza. | Nie. |
include-fragment | Wstawia fragment zasad w definicji zasad. Jeśli istnieje wiele fragmentów, dodaj dodatkowe include-fragment elementy. |
Nie. |
set-method | Ustawia metodę żądania HTTP modułu rozpoznawania nazw. | Tak |
set-url | Ustawia adres URL żądania HTTP modułu rozpoznawania nazw. | Tak |
set-header | Ustawia nagłówek w żądaniu HTTP modułu rozpoznawania nazw. Jeśli istnieje wiele nagłówków, dodaj dodatkowe header elementy. |
Nie. |
set-body | Ustawia treść w żądaniu HTTP programu resolver. | Nie. |
uwierzytelnianie certyfikatu | Uwierzytelnia się przy użyciu certyfikatu klienta w żądaniu HTTP narzędzia rozpoznawania nazw. | Nie. |
backend, element
Element | opis | Wymagania |
---|---|---|
prześlij dalej żądanie | Przekazuje żądanie HTTP modułu rozpoznawania nazw do skonfigurowanej usługi zaplecza. | Nie. |
elementy http-response
Uwaga
Z wyjątkiem przypadków, w których zaznaczono, każdy element podrzędny może być określony co najwyżej raz. Określ elementy w podanej kolejności.
Nazwa/nazwisko | opis | Wymagania |
---|---|---|
set-body | Ustawia treść w odpowiedzi HTTP modułu rozpoznawania nazw. | Nie. |
xml-to-json | Przekształca odpowiedź HTTP programu resolver z xml na JSON. | Nie. |
find-and-replace | Znajduje podciąg w odpowiedzi HTTP modułu rozpoznawania nazw i zastępuje go innym podciągem. | Nie. |
zdarzenie publikowania | Publikuje zdarzenie w co najmniej jednej subskrypcji określonej w schemacie interfejsu API GraphQL. | Nie. |
include-fragment | Wstawia fragment zasad w definicji zasad. Jeśli istnieje wiele fragmentów, dodaj dodatkowe include-fragment elementy. |
Nie. |
Użycie
- Zakresy zasad: program GraphQL resolver
- Bramy: klasyczne, v2, zużycie
Uwagi dotyczące użycia
- Aby skonfigurować program rozpoznawania nazw i zarządzać nim za pomocą tych zasad, zobacz Konfigurowanie narzędzia rozpoznawania języka GraphQL.
- Te zasady są wywoływane tylko w przypadku rozpoznawania pojedynczego pola w pasującym typie operacji GraphQL w schemacie.
Przykłady
Narzędzie rozpoznawania dla zapytania GraphQL
Poniższy przykład rozwiązuje zapytanie, wykonując wywołanie HTTP GET
do źródła danych zaplecza.
Przykładowy schemat
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Przykładowe zasady
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://data.contoso.com/get/users</set-url>
</http-request>
</http-data-source>
Narzędzie rozpoznawania dla zapytania GraqhQL zwracającego listę przy użyciu szablonu liquid
W poniższym przykładzie użyto szablonu liquid obsługiwanego do użycia w zasadach set-body , aby zwrócić listę w odpowiedzi HTTP na zapytanie. Zmienia również nazwę username
pola w odpowiedzi z interfejsu API REST na name
w odpowiedzi GraphQL.
Przykładowy schemat
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Przykładowe zasady
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://data.contoso.com/users</set-url>
</http-request>
<http-response>
<set-body template="liquid">
[
{% JSONArrayFor elem in body %}
{
"name": "{{elem.username}}"
}
{% endJSONArrayFor %}
]
</set-body>
</http-response>
</http-data-source>
Rozpoznawanie mutacji GraphQL
Poniższy przykład rozwiązuje mutację, która wstawia dane, wysyłając POST
żądanie do źródła danych HTTP. Wyrażenie zasad w set-body
zasadach żądania HTTP modyfikuje name
argument przekazywany w zapytaniu GraphQL jako jego treść. Treść, która jest wysyłana, będzie wyglądać podobnie do następującego kodu JSON:
{
"name": "the-provided-name"
}
Przykładowy schemat
type Query {
users: [User]
}
type Mutation {
makeUser(name: String!): User
}
type User {
id: String!
name: String!
}
Przykładowe zasady
<http-data-source>
<http-request>
<set-method>POST</set-method>
<set-url>https://data.contoso.com/user/create </set-url>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@{
var args = context.GraphQL.Arguments;
JObject jsonObject = new JObject();
jsonObject.Add("name", args["name"])
return jsonObject.ToString();
}</set-body>
</http-request>
</http-data-source>
Rozpoznawanie typu unii GraphQL
Poniższy przykład rozwiązuje orderById
zapytanie, wykonując wywołanie HTTP GET
do źródła danych zaplecza i zwraca obiekt JSON zawierający identyfikator klienta i typ. Typ klienta to związek RegisteredCustomer
typów i GuestCustomer
.
Przykładowy schemat
type Query {
orderById(orderId: Int): Order
}
type Order {
customerId: Int!
orderId: Int!
customer: Customer
}
enum AccountType {
Registered
Guest
}
union Customer = RegisteredCustomer | GuestCustomer
type RegisteredCustomer {
accountType: AccountType!
customerId: Int!
customerGuid: String!
firstName: String!
lastName: String!
isActive: Boolean!
}
type GuestCustomer {
accountType: AccountType!
firstName: String!
lastName: String!
}
Przykładowe zasady
W tym przykładzie wyśmiewamy wyniki klienta z zewnętrznego źródła i kod twardy pobranych wyników w set-body
zasadach. Pole __typename
służy do określania typu klienta.
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://data.contoso.com/orders/</set-url>
</http-request>
<http-response>
<set-body>{"customerId": 12345, "accountType": "Registered", "__typename": "RegisteredCustomer" }
</set-body>
</http-response>
</http-data-source>
Powiązane zasady
Powiązana zawartość
Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz:
- Samouczek: przekształcanie i ochrona interfejsu API
- Dokumentacja zasad dla pełnej listy instrukcji zasad i ich ustawień
- Wyrażenia zasad
- Ustawianie lub edytowanie zasad
- Ponowne używanie konfiguracji zasad
- Repozytorium fragmentów zasad
- Tworzenie zasad przy użyciu rozwiązania Microsoft Copilot na platformie Azure