في الRESTful API يكتفي البعض باستخدام POST و GET لأنها تقريباً تؤدي كل ما يحتاجه من عمليات. الGET للقراءة و الPOST للكتابة و التعديل و حتى الحذف. لكن فيه الPUT و الPATCH ايضاً تستخدم للكتابة و هناك DELETE للحذف و اوامر اخرى لم توجد عبث و الAPI عقد بين المبرمج و المستخدم.
(سلسلة)
(سلسلة)
نبدأ بالPOST اللي مايحتاج انك تحدد له Id فلما ترسل طلب لproducts/ l مثلاً بيقوم السيرفر بإنشاء المطلوب او الresource و يرد عليك بـ201 ( Created ) و في نفس الHeader بعطيك موقعه الجديد مثل products/123
لكن هناك مشكلة بسيطة في الPOST و ممكن تكون ميزة و هي انك لو ارسلت نفس الطلب مرة اخرى ولو بالخطأ فسوف ينشيء resource جديد. و بتكون بحاجة لمعالجة هذا في الbackend.
الPOST ليست مهمته الوحيدة الإضافة بحيث نرد عليه ب201 لكن ممكن يستخدم لأي غرض اخر مثل تشغيل عملية اخرى لذا ممكن يكون الرد منه 200 كـOK او 204 No Content حسب العملية. لذا كن منطقي في اخيتار ردك.
نأتي للPUT و اللي ممكن يتسخدم للإضافة و اللي لازم يُحدد في الرابط الId للResource اللي نحتاج نحدثه او حتى نحتاج نضيفه. بنفس طريقة الGET بمعنى نحتاج نكتب product/123 و بالتالي بيكون الرد 200 اذا كانت العملية تحديث او 201 اذا اضافه لأنه موجود مسبقاً.
في POST و PUT ضروري ترسل كامل الObject بمعنى انه لايمكنك عمل تحديث جزئي و لذا اضافوا PATCH لنسهل على الClient فما يحتاج يرسل كامل الObject و بذا ايضاً خففنا الضغط على Bandwidth و غير كذا لو كان فيه تكرار في الRequest فنعرف ان الClient قاصد هذا و علينا معالجة كامل طلباته.
في جزئية بسيطة مهم أن المبرمج ينتبه لها و هي الIdempotency و الSafty . الSafe methods هي اللي ما ينتج عنها اي تعديل للبيانات الخاصة بالبزنس هذه الMethods الأمنة هي GET و فيه HEAD و OPTIONS و TRACE. أما الـPOST و PUT و DELETE و PATCH ليسوا Safe.
اما الIdempotent methods فكل الHTTP methods تعتبر Idempotent ماعدا POST و PATCH. و معناها انه مهما كان عدد الطلبات لنفس الResource فالنتيجة دائماً واحدة لكن ممكن الresoponse يختلف مثل ما ذكرنا في PUT حسب العملية. هذه الخاصية مفيدة اذا الClient ارسل عدة طلبات بالخطأ.
بالنسبة لDELETE فهو من اسمه للحذف و الرد عادة يكون ب200 اذا كان السجل موجود و ب404 اذا كان محذوف من قبل. باقي معنا بعض الأوامر بشرحها باختصار و هي OPTIONS و TRACE و HEAD.
امر OPTIONS يستخدم للاختبار المبدئي من قبل الClient عن الأوامر المتوفرة على URI معين و معلومات اخرى , فتتم معالجته بأن تخبره مثلاً انه يمكنه استخدام الأوامر GET و DELETE على ذاك الURI.
اما أمر HEAD ايضا مهم في الاستعلام فمثلاً بدل ما تنزل ملف كبير ممكن تستعلم عن حجمه بدون تنزيله من خلال Content-Length.
امر TRACE يستخدم في الDebugging بحيث يرجع للمُرسل ماهي المعلومات اللي تلقاها المُستقبِل مه.
امر TRACE يستخدم في الDebugging بحيث يرجع للمُرسل ماهي المعلومات اللي تلقاها المُستقبِل مه.
الفكرة مهم جدا لمن يبني Api أن يعرف كيف يتعامل مع هذه الأوامر و كيف يستجيب لها و حتى كيف يحمي نفسه من بعض الاوامر التي قد تتسبب في اختراق كTRACE. و أن يتأكد من استخدام الأمر و الرد المناسبين فإحسان استخدام تلك الأمور جزء من جودة الApi بالإضافة الى التوثيق documentation.
(انتهى)
(انتهى)
جاري تحميل الاقتراحات...