كيفية تصميم واجهة برمجة تطبيقات RESTful لمحرك تحليل الوسائط
-
22-07-2019 - |
سؤال
أنا جديد على مفهوم Restful ويجب علي تصميم واجهة برمجة تطبيقات بسيطة لخدمة تحليل الوسائط التي أحتاج إلى إعدادها لأداء مهام مختلفة، على سبيل المثال.تحليل الوجه والكشف عن المنطقة وما إلى ذلك.على الصور ومقاطع الفيديو التي تم تحميلها.
الخطوط العريضة لتصميمي الأولي هي كما يلي:
- ينشر العميل ملف XML للتكوين إلى
http://manalysis.com/facerecognition
.هذا يخلق حساب تعريفي والتي يمكن استخدامها لجلسات تحليل متعددة.يتضمن XML للاستجابة أProfileID
للإشارة إلى هذا الملف الشخصي.يمكن للعملاء تخطي هذه الخطوة لاستخدام معلمات التكوين الافتراضية - سيتم تحليل بيانات الفيديو الخاصة بمشاركات العميل
http://manalysis.com/facerecognition
(مع ProfileID كمعلمة، إذا تم إعداده).هذا يخلق جلسة التحليل.يحتوي إرجاع XML علىSessionID
. - يمكن للعميل إرسال GET إلى
http://manalysis.com/facerecognition/SessionID
لتلقي حالة الجلسة.
هل أنا على الطريق الصحيح؟وعلى وجه التحديد، لدي الأسئلة التالية:
- هل يجب أن أشمل
facerecognition
في URL؟يقول روي فيلدنج أن "واجهة برمجة تطبيقات REST يجب ألا تحدد أسماء الموارد الثابتة أو التسلسلات الهرمية" هل هذا مثال على هذا الخطأ؟ - يمكن إرجاع نتائج التحليل إلى العميل في ملف XML كبير واحد أو عند اكتشاف كل حدث.كيف يجب أن أخبر محرك التحليل بمكان إرجاع النتائج؟
- هل يجب عليّ حذف ملف تعريف بشكل صريح عند الانتهاء من التحليل، من خلال استدعاء DELETE؟
شكرًا،
ج
المحلول
يمكنك إصلاح عنوان URL لنقطة الدخول،
GET /facerecognition
<FaceRecognitionService>
<Profiles href="/facerecognition/profiles"/>
<AnalysisRequests href="/facerecognition/analysisrequests"/>
</FaceRecognitionService>
قم بإنشاء ملف تعريف جديد عن طريق نشر ملف تعريف XML على عنوان URL في سمة href لعنصر ملفات التعريف
POST /facerecognition/profiles
201 - Created
Location: /facerecognition/profile/33
ابدأ التحليل عن طريق إنشاء طلب تحليل جديد.سأتجنب استخدام مصطلح الجلسة لأنه عام للغاية وله الكثير من الارتباطات السلبية في عالم REST.
POST /facerecognition/analysisrequests?profileId=33
201 - Created
Location: /facerecognition/analysisrequest/2103
التحقق من حالة العملية
GET /facerecognition/analysisrequest/2103
<AnalysisRequest>
<Status>Processing</Status>
<Cancel Method="DELETE" href="/facerecognition/analysisrequest/2103" />
</AnalysisRequest>
عند انتهاء المعالجة، قد يعود نفس GET
<AnalysisRequest>
<Status>Completed</Status>
<Results href="/facerecognition/analysisrequest/2103/results" />
</AnalysisRequest>
عناوين URL المحددة التي اخترتها عشوائية نسبيًا، ويمكنك استخدام ما هو أكثر وضوحًا بالنسبة لك.