Çözümleyici için HTTP veri kaynağı
UYGULANANLAR: Tüm API Management katmanları
Çözümleyici ilkesi, http-data-source
GraphQL şemasındaki bir nesne türü ve alanı için verileri çözümlemek için HTTP isteğini ve isteğe bağlı olarak HTTP yanıtını yapılandırıyor. Şema, GRAPHQL API'si olarak API Management'a aktarılmalıdır.
Not
İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.
İlke bildirimi
<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>
Öğeler
Veri Akışı Adı | Açıklama | Gerekli |
---|---|---|
http-request | Çözümleyicinin HTTP isteğini yapılandırmak için bir URL ve alt ilke belirtir. | Yes |
arka uç | İsteğe bağlı olarak çözümleyicinin HTTP isteğini belirtildiyse bir arka uç hizmetine iletir. | Hayır |
http-response | İsteğe bağlı olarak çözümleyicinin HTTP yanıtını yapılandırmak için alt ilkeleri belirtir. Belirtilmezse, yanıt ham dize olarak döndürülür. | Hayır |
http-request öğeleri
Not
Belirtilen durumlar dışında, her alt öğe en fazla bir kez belirtilebilir. Öğeleri listelenen sırada belirtin.
Öğe | Açıklama | Gerekli |
---|---|---|
get-authorization-context | Çözümleyicinin HTTP isteği için bir yetkilendirme bağlamı alır. | Hayır |
set-backend-service | Çözümleyicinin HTTP isteğini belirtilen arka uçtan yönlendirir. | Hayır |
include-fragment | İlke tanımına bir ilke parçası ekler. Birden çok parça varsa, ek include-fragment öğeler ekleyin. |
Hayır |
set-method | Çözümleyicinin HTTP isteğinin yöntemini ayarlar. | Yes |
set-url | Çözümleyicinin HTTP isteğinin URL'sini ayarlar. | Yes |
set-header | Çözümleyicinin HTTP isteğinde bir üst bilgi ayarlar. Birden çok üst bilgi varsa, ek header öğeler ekleyin. |
Hayır |
set-body | Çözümleyicinin HTTP isteğindeki gövdeyi ayarlar. | Hayır |
kimlik doğrulama sertifikası | Çözümleyicinin HTTP isteğinde bir istemci sertifikası kullanarak kimlik doğrulaması yapar. | Hayır |
arka uç öğesi
Öğe | Açıklama | Gerekli |
---|---|---|
iletme isteği | Çözümleyicinin HTTP isteğini yapılandırılmış bir arka uç hizmetine iletir. | Hayır |
http-response öğeleri
Not
Belirtilen durumlar dışında, her alt öğe en fazla bir kez belirtilebilir. Öğeleri listelenen sırada belirtin.
Veri Akışı Adı | Açıklama | Gerekli |
---|---|---|
set-body | Çözümleyicinin HTTP yanıtında gövdeyi ayarlar. | Hayır |
xml-to-json | Çözümleyicinin HTTP yanıtını XML'den JSON'a dönüştürür. | Hayır |
bul ve değiştir | Çözümleyicinin HTTP yanıtında bir alt dize bulur ve bunu farklı bir alt dizeyle değiştirir. | Hayır |
publish-event | GraphQL API şemasında belirtilen bir veya daha fazla aboneliğe bir olay yayımlar. | Hayır |
include-fragment | İlke tanımına bir ilke parçası ekler. Birden çok parça varsa, ek include-fragment öğeler ekleyin. |
Hayır |
Kullanım
- İlke kapsamları: GraphQL çözümleyicisi
- Ağ geçitleri: klasik, v2, tüketim
Kullanım notları
- Bu ilkeyle bir çözümleyiciyi yapılandırmak ve yönetmek için bkz . GraphQL çözümleyicisini yapılandırma.
- Bu ilke yalnızca şemada eşleşen bir GraphQL işlem türündeki tek bir alan çözümlendiğinde çağrılır.
Örnekler
GraphQL sorgusu için çözümleyici
Aşağıdaki örnek, bir arka uç veri kaynağına HTTP GET
çağrısı yaparak sorguyu çözümler.
Örnek şema
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Örnek ilke
<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>
Liquid şablonu kullanarak liste döndüren GraphQL sorgusu için çözümleyici
Aşağıdaki örnek, sorguya HTTP yanıtında bir liste döndürmek için küme gövdesi ilkesinde kullanılmak üzere desteklenen bir sıvı şablonu kullanır. Ayrıca yanıttaki alanı REST API'den name
GraphQL yanıtında olarak yeniden adlandırırusername
.
Örnek şema
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Örnek ilke
<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>
GraphQL mutasyonu için çözümleyici
Aşağıdaki örnek, HTTP veri kaynağına istekte bulunarak POST
veri ekleyen bir mutasyonu çözer. HTTP isteğinin ilkesindeki set-body
ilke ifadesi, GraphQL sorgusunda gövdesi olarak geçirilen bir name
bağımsız değişkeni değiştirir. Gönderilen gövde aşağıdaki JSON gibi görünür:
{
"name": "the-provided-name"
}
Örnek şema
type Query {
users: [User]
}
type Mutation {
makeUser(name: String!): User
}
type User {
id: String!
name: String!
}
Örnek ilke
<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>
GraphQL birleşim türü için çözümleyici
Aşağıdaki örnek, bir arka uç veri kaynağına HTTP GET
çağrısı yaparak sorguyu orderById
çözümler ve müşteri kimliğini ve türünü içeren bir JSON nesnesi döndürür. Müşteri türü ve GuestCustomer
türlerinin RegisteredCustomer
birleşimidir.
Örnek şema
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!
}
Örnek ilke
Bu örnekte, dış kaynaktan gelen müşteri sonuçlarıyla dalga geçiyoruz ve ilkede getirilen sonuçları sabit kodla set-body
kodlıyoruz. Alanı __typename
, müşterinin türünü belirlemek için kullanılır.
<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>
İlgili ilkeler
İlgili içerik
İlkelerle çalışma hakkında daha fazla bilgi için bkz:
- Öğretici: API'nizi dönüştürme ve koruma
- İlke deyimlerinin ve ayarlarının tam listesi için ilke başvurusu
- İlke ifadeleri
- İlkeleri ayarlama veya düzenleme
- İlke yapılandırmalarını yeniden kullanma
- İlke kod parçacıkları deposu
- Azure API Management ilke araç seti
- Azure'da Microsoft Copilot kullanarak ilke yazma