قيود استيراد واجهة برمجة التطبيقات، والمشكلات المعروفة
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
عند استيراد واجهة برمجة التطبيقات، قد تواجه بعض القيود، أو تحتاج إلى تحديد المشكلات وتصحيحها قبل أن تتمكن من الاستيراد بنجاح. في هذه المقالة، ستتعلم ما يلي:
- سلوك APIM أثناء استيراد OpenAPI.
- قيود استيراد OpenAPI وكيف يعمل تصدير OpenAPI.
- المتطلبات والقيود الخاصة باستيراد WSDL وWADL.
APIM أثناء استيراد OpenAPI
أثناء استيراد OpenAPI، APIM:
- يتحقق بشكل خاص من معلمات سلسلة الاستعلام المحددة حسب الاقتضاء.
- بشكل افتراضي، يحول معلمات سلسلة الاستعلام المطلوبة إلى معلمات القالب المطلوبة.
إذا كنت تفضل ترجمة معلمات الاستعلام المطلوبة في المواصفات إلى معلمات الاستعلام في APIM، ف قم بتعطيل إعداد تضمين معلمات الاستعلام في قوالب التشغيل عند إنشاء واجهة برمجة التطبيقات في المدخل. يمكنك أيضا إنجاز ذلك باستخدام واجهات برمجة التطبيقات - إنشاء أو تحديث واجهة برمجة تطبيقات REST لتعيين خاصية واجهة برمجة التطبيقات translateRequiredQueryParameters
إلى query
.
بالنسبة لعمليات GET و HEAD و OPTIONS، تتجاهل APIM معلمة نص الطلب إذا تم تعريفها في مواصفات OpenAPI.
قيود استيراد OpenAPI/Swagger
إذا تلقيت أخطاءً أثناء استيراد مستند OpenAPI، فتأكد من التحقق من صحته مسبقًا إما عن طريق:
- باستخدام المصمم في مدخل Microsoft Azure (Design > Front End > OpenAPI Specification Editor)، أو
- باستخدام أداة جهة خارجية، مثل Swagger Editor.
العامه
متطلبات قالب URL
المتطلبات | الوصف |
---|---|
أسماء فريدة لمعلمات المسار والاستعلام المطلوبة | في OpenAPI:
|
معلمة URL المعرفة | يجب أن تكون جزءًا من قالب URL. |
عنوان URL المتوفر لملف المصدر | يتم تطبيقه على عناوين URL للخادم ذات الصلة. |
\$ref مؤشرات |
لا يمكن الرجوع إلى الملفات الخارجية. |
مواصفات OpenAPI
الإصدارات المدعومة
لا تدعم سوى APIM:
- OpenAPI الإصدار 2.
- OpenAPI الإصدار 3.0.x (حتى الإصدار 3.0.3).
- الإصدار 3.1 من OpenAPI (استيراد فحسب)
قيود الحجم
حد الحجم | الوصف |
---|---|
ما يصل إلى 4 ميغابايت | عندما استيراد مواصفات OpenAPI مضمنة إلى APIM. |
حجم طلب واجهة برمجة تطبيقات Azure Resource Manager | عندما يتم توفير مستند OpenAPI عبر عنوان URL إلى موقع يمكن الوصول إليه من خدمة APIM. راجع حدود اشتراك Azure. |
الملحقات المدعومة
الملحقات المعتمدة الوحيدة هي:
ملحق | الوصف |
---|---|
x-ms-paths |
|
x-servers |
منفذ خلفي لكائن OpenAPI 3 servers ل OpenAPI 2. |
الملحقات غير المعتمدة
ملحق | الوصف |
---|---|
Recursion |
لا تدعم APIM التعريفات المحددة بشكل متكرر. على سبيل المثال، المخططات التي تشير إلى نفسها. |
Server الكائن |
غير معتمدة على مستوى تشغيل API. |
Produces الكلمه الاساسيه |
يصف أنواع MIME التي تم إرجاعها من خلال API. غير مدعومة. |
الملحقات المخصصة
- يتم تجاهلها عند الاستيراد.
- لا يتم حفظها أو الاحتفاظ بها للتصدير.
التعريفات غير المعتمدة
لا يتم دعم تعريفات المخطط المضمن لعمليات API. تعريفات المخطط:
- يتم تعريفها في نطاق API.
- يمكن الرجوع إليها في طلبات عمليات API، أو نطاقات الاستجابة.
التعريفات المهملة
يتم تجاهل تعريفات الأمان.
القيود الخاصة بالتعريف
عند استيراد معلمات الاستعلام، يُدعم أسلوب إنشاء تسلسل الصفيف الافتراضي (style: form
، explode: true
) فحسب. للحصول علي المزيد من التفاصيل حول معلمات الاستعلام في مواصفات OpenAPI، راجع مواصفات إنشاء التسلسل.
المعلمات المحددة في ملفات تعريف الارتباط غير مدعومة. لا يزال بإمكانك استخدام النهج لفك تشفير محتويات ملفات تعريف الارتباط والتحقق من صحتها.
OpenAPI الإصدار 2
يقتصر دعم OpenAPI الإصدار 2 على تنسيق JSON فقط.
معلمات نوع "النموذج" غير مدعومة. لا يزال بإمكانك استخدام النهج لفك تشفير البيانات الأساسية والتحقق من صحتهاapplication/x-www-form-urlencoded
.application/form-data
الإصدار 3.x من OpenAPI
تدعم APIM إصدارات المواصفات الآتية:
- OpenAPI 3.0.3
- OpenAPI 3.1.0 (استيراد فحسب)
عناوين URL لـ HTTPS
- إذا تم تحديد متعدد
servers
، فستستخدم إدارة واجهة برمجة التطبيقات عنوان URL HTTPS الأول الذي تعثر عليه. - إذا لم يكن هناك أي عناوين URL ل HTTPS، يكون عنوان URL للخادم فارغا.
مدعوم
example
غير مدعوم
يتم تضمين الحقول التالية في الإصدار 3.0.x من OpenAPI أو OpenAPI الإصدار 3.1.x، ولكنها غير مدعومة:
الكائن | الحقل |
---|---|
OpenAPI | externalDocs |
معلومات | summary |
المكونات |
|
PathItem |
|
العملية |
|
المعلمة |
|
آليات استيراد OpenAPI وتحديثها وتصديرها
العامه
تعريفات API المصدرة من خدمة APIM هي:
- مخصص بشكل أساسي للتطبيقات الخارجية التي تحتاج إلى استدعاء واجهة برمجة التطبيقات المستضافة في خدمة APIM.
- لا يُقصد استيراده إلى نفس خدمة APIM أو خدمة مختلفة.
لإدارة تكوين تعريفات API عبر خدمات/ بيئات مختلفة، ارجع إلى الوثائق المتعلقة باستخدام خدمة APIM مع Git.
إضافة API جديدة عبر استيراد OpenAPI
لكل عملية تم العثور عليها في مستند OpenAPI، يتم إنشاء عملية جديدة باستخدام:
تم تعيين اسم مورد Azure إلى
operationId
.operationId
يتم تسوية القيمة.- إذا
operationId
لم يتم تحديد (غير موجود أوnull
أو فارغ)، يتم إنشاء قيمة اسم مورد Azure عن طريق الجمع بين أسلوب HTTP وقالب المسار.- على سبيل المثال،
get-foo
- على سبيل المثال،
تم تعيين اسم العرض إلى
summary
.summary
قيمه:- تم استيراده كما هو.
- يقتصر الطول على 300 حرفًا.
- إذا
summary
لم يتم تحديد (غير موجود أوnull
أو فارغ)، فسيتم تعيين قيمة اسم العرض إلىoperationId
.
قواعد التسوية ل operationId
- تحويل إلى أحرف صغيرة.
- استبدل كل تسلسل من الأحرف غير الأبجدية الرقمية بشرطة واحدة.
- على سبيل المثال،
GET-/foo/{bar}?buzz={quix}
يتم تحويله إلىget-foo-bar-buzz-quix-
.
- على سبيل المثال،
- قم بقص الشرطات على كلا الجانبين.
- على سبيل المثال،
get-foo-bar-buzz-quix-
يصبحget-foo-bar-buzz-quix
- على سبيل المثال،
- قم بالاقتطاع لملاءمة 76 حرفًا؛ أربعة أحرف أقل من الحد الأقصى لاسم المورد.
- استخدم الأحرف الأربعة المتبقية للاحقة إزالة التكرار، إذا لزم الأمر، في شكل
-1, -2, ..., -999
.
تحديث API موجود عبر استيراد OpenAPI
أثناء الاستيراد، عملية API الموجودة:
- التغييرات لمطابقة API الموضحة في مستند OpenAPI.
- يطابق عملية في مستند OpenAPI عن طريق مقارنة
operationId
قيمته باسم مورد Azure الخاص بالعملية الحالية.- إذا تم العثور على تطابق، يتم تحديث خصائص العملية الحالية "في مكانها".
- إذا لم يتم العثور على تطابق:
- يتم إنشاء عملية جديدة عن طريق الجمع بين أسلوب HTTP وقالب المسار، على سبيل المثال،
get-foo
. - لكل عملية جديدة، سيحاول الاستيراد نسخ النُهج من عملية حالية بنفس أسلوب HTTP، ونفس قالب المسار.
- يتم إنشاء عملية جديدة عن طريق الجمع بين أسلوب HTTP وقالب المسار، على سبيل المثال،
يتم حذف كافة العمليات غير المتطابقة الموجودة.
لجعل الاستيراد أكثر قابلية للتنبؤ به، اتبع الإرشادات التالية:
- حدد
operationId
خاصية لكل عملية. - الامتناع عن التغيير
operationId
بعد الاستيراد الأولي. - لا تتغير
operationId
أبدا وأسلوب HTTP أو قالب المسار في نفس الوقت.
قواعد التسوية ل operationId
- تحويل إلى أحرف صغيرة.
- استبدل كل تسلسل من الأحرف غير الأبجدية الرقمية بشرطة واحدة.
- على سبيل المثال،
GET-/foo/{bar}?buzz={quix}
يتم تحويله إلىget-foo-bar-buzz-quix-
.
- على سبيل المثال،
- قم بقص الشرطات على كلا الجانبين.
- على سبيل المثال،
get-foo-bar-buzz-quix-
يصبحget-foo-bar-buzz-quix
- على سبيل المثال،
- قم بالاقتطاع لملاءمة 76 حرفًا؛ أربعة أحرف أقل من الحد الأقصى لاسم المورد.
- استخدم الأحرف الأربعة المتبقية للاحقة إزالة التكرار، إذا لزم الأمر، في شكل
-1, -2, ..., -999
.
تصدير API كـ OpenAPI
لكل عملية، يكون:
- يتم تصدير اسم مورد Azure ك
operationId
. - يتم تصدير اسم العرض ك
summary
.
لاحظ أن تسوية operationId
تتم عند الاستيراد، ليس عند التصدير.
WSDL
يمكنك إنشاء مرور خلال بروتوكول SOAP، وبروتوكول SOAP إلى واجهات برمجيات تطبيقات REST باستخدام ملفات WSDL.
روابط بروتوكول SOAP
- يتم دعم روابط بروتوكول SOAP فقط لنمط الترميز "المستند" و"القيمة الحرفية".
- لا يوجد دعم لنمط "rpc"، أو ترميز بروتوكول SOAP.
عمليات الاستيراد وعمليات التضمين
التوجيهان
wsdl:import
،xsd:import
، وxsd:include
غير مدعومين. بدلًا من ذلك، ادمج التبعيات في مستند واحد.للحصول على أداة مفتوحة المصدر لحل ودمج تبعيات
wsdl:import
،xsd:import
وxsd:include
في ملف WSDL، راجع مستودع GitHub هذا.
WS-* specifications
ملفات WSDL التي تتضمن مواصفات WS-* غير مدعومة.
رسائل ذات أجزاء متعددة
نوع الرسالة هذا غير معتمد.
WCF wsHttpBinding
- يجب أن تستخدم
basicHttpBinding
خدمات SOAP التي تم إنشاؤها باستخدام Windows Communication Foundation . wsHttpBinding
غير مدعوم.
MTOM
- الخدمات التي تستخدم
MTOM
ربما تعمل. - لا يتم تقديم الدعم الرسمي في الوقت الحالي.
الإعادة
- الأنواع المعرفة بشكل متكرر غير مدعومة من قبل إدارة واجهة برمجة التطبيقات.
- على سبيل المثال، راجع الصفيف بحد ذاتها.
مساحات أسماء متعددة
إذا كان يمكن استخدام مساحات أسماء متعددة في مخطط معين، فإنه يمكن استخدام مساحة الاسم الهدف فقط لتحديد أجزاء الرسالة. تُستخدم مساحات الأسماء هذه لتحديد عناصر الإدخال أو الإخراج الأخرى.
لا يتم الاحتفاظ بمساحات الأسماء بخلاف الهدف عند التصدير. بينما يمكنك استقبال وثيقة WSDL، والتي تحدد أجزاء الرسالة مع مساحات أسماء أخرى، فإن كل أجزاء الرسالة ستحتوي على مساحة اسم WSDL المستهدفة عند التصدير.
نقاط نهاية متعددة
يمكن لملفات WSDL تعريف خدمات ونقاط نهاية متعددة (منافذ) بمقدار واحد أو أكثر wsdl:service
وعناصر wsdl:port
. ومع ذلك، فإن بوابة APIM قادرة على استيراد طلبات الوكيل وخدمة واحدة ونقطة نهاية واحدة فقط. إذا تم تعريف خدمات أو نقاط نهاية متعددة في ملف WSDL، فحدد اسم الخدمة الهدف ونقطة النهاية عند استيراد واجهة برمجة التطبيقات باستخدام خاصية wsdlSelector .
تلميح
إذا كنت ترغب في تحميل الطلبات عبر خدمات ونقاط نهاية متعددة، ففكر في تكوين تجمع خلفية متوازن التحميل.
الصفائف
يدعم تحويل بروتوكول SOAP إلى واجهة برمجة تطبيقات REST المصفوفات المغلفة الموضحة في المثال أدناه:
<complexType name="arrayTypeName">
<sequence>
<element name="arrayElementValue" type="arrayElementType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="typeName">
<sequence>
<element name="element1" type="someTypeName" minOccurs="1" maxOccurs="1"/>
<element name="element2" type="someOtherTypeName" minOccurs="0" maxOccurs="1" nillable="true"/>
<element name="arrayElement" type="arrayTypeName" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
WADL
حاليًا، لا توجد مشكلات معروفة في استيراد WADL.