مصدر بيانات HTTP لمحلل
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
http-data-source
يقوم نهج الحل بتكوين طلب HTTP واستجابة HTTP بشكل اختياري لحل البيانات لنوع عنصر وحقل في مخطط GraphQL. يجب استيراد المخطط إلى API Management كواجهة برمجة تطبيقات GraphQL.
إشعار
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.
نهج السياسة
<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>
عناصر
Name | الوصف | مطلوب |
---|---|---|
طلب http | يحدد عنوان URL ونُهُج تابعة لتكوين طلب HTTP الخاص بالمحلل. | نعم |
الواجهة الخلفية | يقوم اختياريا بإعادة توجيه طلب HTTP الخاص بالمحلل إلى خدمة خلفية، إذا تم تحديده. | لا |
استجابة http | يحدد اختيارياً النُهُج التابعة لتكوين استجابة HTTP للمحلل. إذا لم يتم تحديدها، يتم إرجاع الاستجابة كسلسلة أولية. | لا |
عناصر طلب http
إشعار
باستثناء الحالات التي تمت ملاحظتها، يمكن تحديد كل عنصر تابع مرة واحدة على الأكثر. حدد العناصر بالترتيب المدرج.
العنصر | الوصف | مطلوب |
---|---|---|
الحصول على سياق التخويل | الحصول على سياق تخويل لطلب HTTP الخاص بالمحلل. | لا |
تعيين خدمة الواجهة الخلفية | يعيد توجيه طلب HTTP الخاص بالمحلل إلى الخلفية المحددة. | لا |
تضمين-جزء | إدراج جزء نهج في تعريف النهج. إذا كانت هناك أجزاء متعددة، فأضف عناصر إضافية include-fragment . |
لا |
أسلوب التعيين | تعيين أسلوب طلب HTTP الخاص بالمحلل. | نعم |
set-url | تعيين عنوان URL لطلب HTTP الخاص بالمحلل. | نعم |
تعيين العنوان | تعيين عنوان في طلب HTTP الخاص بالمحلل. إذا كانت هناك رؤوس متعددة، فأضف عناصر إضافية header . |
لا |
تعيين النص الأساسي | تعيين النص الأساسي في طلب HTTP الخاص بالمحلل. | لا |
شهادة المصادقة | يصادق باستخدام شهادة عميل في طلب HTTP الخاص بالمحلل. | لا |
عنصر الواجهة الخلفية
العنصر | الوصف | مطلوب |
---|---|---|
طلب إعادة التوجيه | إعادة توجيه طلب HTTP الخاص بالمحلل إلى خدمة خلفية مكونة. | لا |
عناصر استجابة http
إشعار
باستثناء الحالات التي تمت ملاحظتها، يمكن تحديد كل عنصر تابع مرة واحدة على الأكثر. حدد العناصر بالترتيب المدرج.
Name | الوصف | مطلوب |
---|---|---|
تعيين النص الأساسي | تعيين النص الأساسي في استجابة HTTP للمحلل. | لا |
xml إلى json | تحويل استجابة HTTP للمحلل من XML إلى JSON. | لا |
البحث والاستبدال | البحث عن سلسلة فرعية في استجابة HTTP للمحلل واستبدالها بسلاسل فرعية مختلفة. | لا |
نشر الحدث | نشر حدث إلى اشتراك واحد أو أكثر محدد في مخطط واجهة برمجة تطبيقات GraphQL. | لا |
تضمين-جزء | إدراج جزء نهج في تعريف النهج. إذا كانت هناك أجزاء متعددة، فأضف عناصر إضافية include-fragment . |
لا |
الاستخدام
- نطاقات النهج: محلل GraphQL
- البوابات: الكلاسيكية، الإصدار 2، الاستهلاك
ملاحظات الاستخدام
- لتكوين محلل وإدارته باستخدام هذا النهج، راجع تكوين محلل GraphQL.
- يتم استدعاء هذا النهج فقط عند حل حقل واحد في نوع عملية GraphQL مطابق في المخطط.
الأمثلة
محلل لاستعلام GraphQL
يحل المثال التالي استعلاماً عن طريق إجراء استدعاء بروتوكول HTTP GET
إلى مصدر بيانات الخلفية.
مثال لمخطط بسيط
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
مثال على النهج
<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>
محلل لاستعلام GraqhQL الذي يقوم بإرجاع قائمة، باستخدام قالب سائل
يستخدم المثال التالي قالباً سائلاً مدعوماً للاستخدام في النهج set-body، لإرجاع قائمة في استجابة البروتوكول HTTP إلى استعلام. كما أنه يعيد تسمية الحقل username
في الاستجابة من واجهة برمجة تطبيقات REST إلى name
في استجابة GraphQL.
مثال لمخطط بسيط
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
مثال على النهج
<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
يحل المثال التالي تعديلاً يدرج البيانات عن طريق تقديم POST
طلب إلى مصدر بيانات HTTP. يعدل تعبير النهج في النهج set-body
لطلب HTTP وسيطة name
التي يتم تمريرها في الاستعلام GraphQL كنص خاص به. سيبدو النص الذي يتم إرساله مثل صيغة JSON التالية:
{
"name": "the-provided-name"
}
مثال لمخطط بسيط
type Query {
users: [User]
}
type Mutation {
makeUser(name: String!): User
}
type User {
id: String!
name: String!
}
مثال على النهج
<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
يحل orderById
المثال التالي الاستعلام عن طريق إجراء استدعاء HTTP GET
إلى مصدر بيانات الواجهة الخلفية وإرجاع كائن JSON يتضمن معرف العميل ونوعه. نوع العميل هو اتحاد أنواع RegisteredCustomer
و GuestCustomer
.
مثال لمخطط بسيط
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!
}
مثال على النهج
على سبيل المثال، نحن نسخر نتائج العميل من مصدر خارجي، والرمز الثابت النتائج التي تم جلبها في النهج set-body
. __typename
يتم استخدام الحقل لتحديد نوع العميل.
<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>
النهج ذات الصلة
المحتوى ذو الصلة
لمزيد من المعلومات حول العمل مع النُهج، راجع: