تعيين النص الأساسي
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
استخدم النهج set-body
لتعيين نص الرسالة لطلب أو استجابة. للوصول إلى نص الرسالة، يمكنك استخدام الخاصية context.Request.Body
أو context.Response.Body
، بناءً على ما إذا كان النهج في قسم البريد الوارد أو الصادر.
هام
بشكل افتراضي عند الوصول إلى نص الرسالة باستخدام context.Request.Body
أو context.Response.Body
، يتم فقدان نص الرسالة الأصلي ويجب تعيينه عن طريق إرجاع النص الأساسي مرة أخرى في التعبير. للحفاظ على محتوى النص، اضبط المعلمة preserveContent
على true
عند الوصول إلى الرسالة. إذا تم تعيين preserveContent
على true
وتم إرجاع نص مختلف بواسطة التعبير، فسيتم استخدام النص الذي تم إرجاعه.
ملاحظة
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.
<set-body template="liquid" xsi-nil="blank | null" parse-date="true | false">
new body value as text
</set-body>
السمة | الوصف | مطلوبة | افتراضي |
---|---|---|---|
القالب | يستخدم لتغيير وضع ال templating الذي يتم تشغيل النهج set-body فيه. القيمة الوحيدة المدعومة حاليًّا هي:- liquid - سيستخدم النهج set-body محرك القولبة السائل |
لا | غير متاح |
xsi-nil | يستخدم للتحكم في كيفية تمثيل العناصر التي تم وضع علامة عليها xsi:nil="true" في حمولات XML. تعيين إلى إحدى القيم التالية:- blank - nil يتم تمثيل بسلسلة فارغة.- null - nil يتم تمثيل بقيمة خالية.تعبيرات النهج غير مسموح بها. |
لا | blank |
parse-date | منطقي. تحديد ما إذا كانت السلاسل المنسقة للتاريخ (على سبيل المثال، "/Date(1198908717056)/" ، "2012-03-21T05:40Z" ) يتم تحليلها إلى System.DateTime (mm/dd/yyyy hh:mm:ss ). عند التعيين إلى false ، يتم نسخ قيم التاريخ ببساطة.تعبيرات النهج غير مسموح بها. |
لا | true |
للوصول إلى معلومات حول الطلب والاستجابة، يمكن ربط القالب Liquid بعنصر سياق بالخصائص التالية:
context. Request. Url Method OriginalMethod OriginalUrl IpAddress MatchedParameters HasBody ClientCertificates Headers Response. StatusCode Method Headers Url. Scheme Host Port Path Query QueryString ToUri ToString OriginalUrl. Scheme Host Port Path Query QueryString ToUri ToString
- أقسام النهج: الواردة والصادرة والخلفية
- نطاقات النهج: العمومية، ومساحة العمل، والمنتج، وواجهة برمجة التطبيقات، والتشغيل
- البوابات: الكلاسيكية، الإصدار 2، الاستهلاك، المستضافة ذاتيا، مساحة العمل
- إذا كنت تستخدم النهج
set-body
لإرجاع نص جديد أو محدث، فلن تحتاج إلى التعيينpreserveContent
إلىtrue
لأنك توفر محتويات النص الأساسي الجديد بشكل صريح. - الحفاظ على محتوى الاستجابة في البنية الأساسية لبرنامج ربط العمليات التجارية الواردة غير منطقي لأنه لا توجد استجابة حتى الآن.
- الاحتفاظ بمحتوى طلب في البنية الأساسية لبرنامج ربط العمليات التجارية الصادر لا معنى له لأن الطلب قد تم إرساله بالفعل إلى الخلفية في هذه المرحلة.
- إذا تم استخدام هذا النهج عندما لا يكون هناك نص رسالة، على سبيل المثال في وارد
GET
، يتم طرح استثناء.
لمزيد من المعلومات، راجع أقسام context.Request.Body
وcontext.Response.Body
وIMessageBody
في جدول Context variable.
يمكن تكوين النهجset-body
لاستخدام لغةLiquid templating لتحويل نص الطلب أو الاستجابة. يمكن أن يكون هذا فعالاً للغاية إذا كنت بحاجة إلى إعادة تشكيل تنسيق رسالتك بالكامل.
هام
تم تكوين تطبيق Liquid المستخدم في نهج set-body
في "الوضع C #". هذا مهم بشكل خاص عند القيام بأشياء مثل عامل التصفية. كمثال، يتطلب استخدام عامل تصفية التاريخ استخدام حالة باسكال وتنسيق تاريخ C #، على سبيل المثال:
{{body.foo.startDateTime| Date:"yyyyMMddTHH:mm:ssZ"}}
هام
للربط بشكل صحيح بنص XML باستخدام Liquid template، استخدم نهجًا set-header
لتعيين Content-Type إما إلى application/ xml أو text/ xml (أو أي نوع ينتهي بـ +xml)؛ بالنسبة إلى نص JSON، يجب أن يكون application/ json أو text/ json (أو أي نوع ينتهي بـ +json).
هام
تستخدم القوالب السائلة نص الطلب/الاستجابة في مسار التنفيذ الحالي كمدخل لها. لهذا السبب، لا تعمل القوالب السائلة عند استخدامها داخل نهج الاستجابة للإرجاع. يلغي نهج الاستجابة للإرجاع مسار التنفيذ الحالي ويزيل نص الطلب/الاستجابة. ونتيجة لذلك، سيتلقى أي قالب سائل مستخدم داخل استجابة الإرجاع سلسلة فارغة كإدخل ولن ينتج الإخراج المتوقع.
يتم دعم عوامل تصفية السوائل التالية في النهج set-body
. للحصول على أمثلة التصفية، اطلع على الوثائق السائلة.
ملاحظة
يتطلب النهج حالة باسكال لأسماء عوامل التصفية السائلة (على سبيل المثال، "AtLeast" بدلاً من "at_least").
- Abs
- إلحاق
- AtLeast
- AtMost
- أحرف كبيرة
- Compact
- العملة
- التاريخ
- الإعداد الافتراضي
- DividedBy
- أحرف هابطة
- Escape
- First
- H
- انضمام
- Last
- Lstrip
- الخريطة
- ناقص
- Modulo
- NewlineToBr
- زائد
- إلحاق
- إزالة
- RemoveFirst
- الاستبدال
- ReplaceFirst
- جولة
- Rstrip
- الحجم
- شريحة
- Sort
- انقسام
- شريط
- StripHtml
- StripNewlines
- الأوقات
- اقتطاع
- TruncateWords
- Uniq
- أحرف لأعلى
- UrlDecode
- UrlEncode
<set-body>Hello world!</set-body>
نحن نحافظ على نص الطلب الأصلي حتى نتمكن من الوصول إليه لاحقا في البنية الأساسية لبرنامج ربط العمليات التجارية.
<set-body>
@{
string inBody = context.Request.Body.As<string>(preserveContent: true);
if (inBody[0] =='c') {
inBody[0] = 'm';
}
return inBody;
}
</set-body>
نظرا لأننا لا نحجز نص الطلب الأصلي، فإن الوصول إليه لاحقا في البنية الأساسية لبرنامج ربط العمليات التجارية سيؤدي إلى استثناء.
<set-body>
@{
JObject inBody = context.Request.Body.As<JObject>();
if (inBody.attribute == <tag>) {
inBody[0] = 'm';
}
return inBody.ToString();
}
</set-body>
يوضح هذا المثال كيفية إجراء عامل التصفية المحتوى عن طريق إزالة عناصر البيانات من الاستجابة المتلقاة من الخدمة في الخلفية عند استخدام منتج Starter
. يتضمن مثال استجابة الواجهة الخلفية خصائص على مستوى الجذر مشابهة لواجهة برمجة تطبيقات مكالمة النظام الأساسي لـ OpenWeather One Call.
<!-- Copy this snippet into the outbound section to remove a number of data elements from the response received from the backend service based on the name of the product -->
<choose>
<when condition="@(context.Response.StatusCode == 200 && context.Product.Name.Equals("Starter"))">
<set-body>@{
var response = context.Response.Body.As<JObject>();
foreach (var key in new [] {"current", "minutely", "hourly", "daily", "alerts"}) {
response.Property (key).Remove ();
}
return response.ToString();
}
</set-body>
</when>
</choose>
<set-body template="liquid">
<soap:Envelope xmlns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetOpenOrders>
<cust>{{body.getOpenOrders.cust}}</cust>
</GetOpenOrders>
</soap:Body>
</soap:Envelope>
</set-body>
<set-body template="liquid">
{
"order": {
"id": "{{body.customer.purchase.identifier}}",
"summary": "{{body.customer.purchase.orderShortDesc}}"
}
}
</set-body>
يستخدم AsFormUrlEncodedContent()
المثال التالي التعبير للوصول إلى نص الطلب كبيانات نموذج مشفرة بعنوان URL (نوع application/x-www-form-urlencoded
المحتوى)، ثم يحولها إلى JSON. نظرا لأننا لا نحجز نص الطلب الأصلي، فإن الوصول إليه لاحقا في البنية الأساسية لبرنامج ربط العمليات التجارية سيؤدي إلى استثناء.
<set-body>
@{
var inBody = context.Request.Body.AsFormUrlEncodedContent();
return JsonConvert.SerializeObject(inBody);
}
</set-body>
يستخدم AsFormUrlEncodedContent()
المثال التالي التعبير للوصول إلى نص الطلب كبيانات نموذج مشفرة بعنوان URL (نوع application/x-www-form-urlencoded
المحتوى)، ويضيف البيانات إلى الحمولة، ويعيد بيانات النموذج المرمزة بعنوان URL. نظرا لأننا لا نحجز نص الطلب الأصلي، فإن الوصول إليه لاحقا في البنية الأساسية لبرنامج ربط العمليات التجارية سيؤدي إلى استثناء.
<set-body>
@{
var body = context.Request.Body.AsFormUrlEncodedContent();
body["newKey"].Add("newValue");
return body.ToFormUrlEncodedContent();
}
</set-body>
لمزيد من المعلومات حول العمل مع النُهج، راجع:
- البرنامج التعليمي: تحويل واجهة برمجة التطبيقات الخاصة بك وحمايتها
- Policy reference لقائمة كاملة من بيانات النُهج وإعداداتها
- تعبيرات النهج
- تعيين النهج أو تحريرها
- إعادة استخدام التكوينات الخاصة بالنهج
- مستودع القصاصات البرمجية للنهج
- مجموعة أدوات نهج إدارة واجهة برمجة تطبيقات Azure
- نهج المؤلف باستخدام Microsoft Copilot في Azure