لقد تعلمت مؤخرًا مواصفات واجهة RESTful واستخدمت Postman لتقديمها، وإليك مواصفات واجهة RESTful ذات الصلة: 1. ما هو RESTful؟
REST: هو أسلوب معماري لخدمات الويب، ويستخدم معايير وبروتوكولات شائعة على نطاق واسع مثل HTTP، وURI، وXML، وJSON، وHTML، وهو تصميم معماري خفيف الوزن ومتعدد المنصات الأسلوب، وليس المعيار هو فكرة.
RESTful: اللغة الصينية المقابلة هي REST؛ خدمة الويب Restful هي تطبيق REST شائع، وهي خدمة ويب تتوافق مع نمط REST؛ خدمة الويب REST هي نوع من هندسة ROA (الهندسة المعمارية الموجهة نحو الموارد). ) [توصية: الواجهة الأمامية للويب]
جوهر RESTful هو أسلوب هندسة البرمجيات. جوهره موجه نحو الموارد ويحل المشكلات التالية:
تقليل تعقيد التنمية
تحسين قابلية تطوير النظام
2. الفرق بين SOAP و REST:
SOAP (بروتوكول الوصول إلى الكائنات البسيطة): مواصفات بروتوكول لتبادل البيانات، وهو بروتوكول خفيف الوزن وبسيط ويستند إلى لغة XML.
REST (نقل الحالة التمثيلية): أسلوب هندسة برمجية يمكنه تقليل تعقيد التطوير وتحسين قابلية تطوير النظام.
الكفاءة وسهولة الاستخدام :
SOAP : بسبب التوسع المستمر في محتوى البروتوكول الخاص به بسبب الاحتياجات المختلفة، انخفض أداء معالجة SOAP. وفي الوقت نفسه، زادت أيضًا سهولة الاستخدام وتكاليف التعلم.
RESTful : نظرًا لتصميم الواجهة الموجهة نحو الموارد وتجريد التشغيل، فإنه يبسط التصميمات السيئة للمطورين، كما يحقق أقصى استفادة من مفهوم تصميم بروتوكول التطبيق الأصلي لـ HTTP.
حماية :
يعد RESTful مناسبًا جدًا لواجهات الخدمة القائمة على الموارد، وهو مناسب بشكل خاص للسيناريوهات التي تتطلب كفاءة عالية ولكن متطلبات أمان منخفضة.
يمكن أن يؤدي نضج SOAP إلى توفير الراحة لتصميم الواجهات التي يجب توفيرها للغات تطوير متعددة ولها متطلبات أمان أعلى.
في ملخص:
الأمان : سيكون SOAP أفضل من REST؛
الكفاءة وسهولة الاستخدام : REST أفضل؛
النضج : بشكل عام، يتفوق SOAP على REST من حيث النضج.
3. كيفية تصميم RESTful API :
مسار المورد : في بنية RESTful، يمثل كل عنوان URL موردًا، لذلك لا يمكن أن يحتوي عنوان URL على أفعال، بل أسماء فقط. بشكل عام، يجب أن تكون الأسماء في واجهات برمجة التطبيقات متعددة.
فعل HTTP : عملية تشغيل الموارد (CURD)، ممثلة بفعل HTTP (المسند).
GET: استرداد الموارد (عنصر واحد أو أكثر) من الخادم.
POST: إنشاء مورد جديد على الخادم.
PUT: تحديث الموارد على الخادم (يوفر العميل الموارد المتغيرة بالكامل).
حذف: حذف المورد من الخادم.
لنأخذ حديقة الحيوان كمثال (بما في ذلك معلومات حول مختلف الحيوانات والموظفين):
https://api.example.com/v1/zoos //موارد حديقة الحيوان https://api.example.com/v1/animals //الموارد الحيوانية https://api.example.com/v1/employees //الموظفون الموارد
POST /zoos: إنشاء حديقة حيوانات جديدة
الحصول على /zoos/ID: الحصول على معلومات حول حديقة حيوان محددة
PUT /zoos/ID: تحديث معلومات حديقة الحيوان المحددة
حذف /zoos/D: حذف حديقة الحيوان
معلومات التصفية :
?limit=10: حدد عدد السجلات التي تم إرجاعها
?offset=10: يحدد موضع البداية للسجل الذي تم إرجاعه.
?page=2&per_page=100: حدد الصفحة وعدد السجلات لكل صفحة.
?sortby=name&order=asc: حدد السمة التي سيتم فرز النتائج التي تم إرجاعها وفقًا لها، وترتيب الفرز.
?animal_type_id=1: حدد شروط التصفية
رمز الحالة :
200 (موافق) - إذا تم تغيير مورد موجود
201 (تم إنشاؤه) - في حالة إنشاء مورد جديد
202 (مقبول) - تم قبول طلب المعالجة ولكن لم يكتمل (معالجة غير متزامنة)
301 (تم النقل نهائيًا) - تم تحديث URI الخاص بالمورد
303 (انظر أخرى)-أخرى (مثل موازنة التحميل)
400 (طلب سيء) - يشير إلى طلب سيء
404 (غير موجود)-المورد غير موجود
406 (غير مقبول) - الخادم لا يدعم التمثيل المطلوب
409 (الصراع) - الصراع العام
412 (فشل الشرط المسبق)-فشل الشرط المسبق (مثل حدوث تعارض عند تنفيذ تحديثات الشرط)
415 (نوع الوسائط غير مدعوم) - التمثيل المستلم غير مدعوم
500 (خطأ داخلي في الخادم)-استجابة خطأ عام
503 (الخدمة غير متاحة) - الخدمة غير قادرة حاليًا على التعامل مع الطلب
معالجة الأخطاء :
تستخدم المعلومات التي تم إرجاعها الخطأ كاسم المفتاح ومعلومات الخطأ كقيمة المفتاح.
{ الخطأ: "مفتاح واجهة برمجة التطبيقات غير صالح" }
نتائج العودة :
GET /collection: إرجاع قائمة (مصفوفة) من كائنات الموارد
GET /collection/resource: إرجاع كائن مورد واحد
POST /collection: إرجاع كائن المورد الذي تم إنشاؤه حديثًا
PUT /collection/resource: إرجاع كائن المورد الكامل
التصحيح / المجموعة / المورد: إرجاع كائن المورد الكامل
DELETE /collection/resource: يُرجع مستندًا فارغًا
4. عملية اختبار واجهة نمط REST :
دعونا نقدمها مباشرة مع الصورة.
5. كتابة الأكواد واختبار ساعي البريد :
الأدوات: الفكرة، قاعدة بيانات MySQL، ساعي البريد
بيانات جدول قاعدة البيانات:
فئة الكيان:
مدخل الواجهة الأمامية (vue) إلى دورة الإتقان: أدخل التعلم
@بيانات @ApiModel("فئة كيان المستخدم") يقوم مستخدم الفئة العامة بتوسيع Model<User> بتنفيذ Serializable { @ApiModelProperty("معرف المستخدم") @NotNull(message = "لا يمكن أن يكون معرف المستخدم فارغًا") معرف عدد صحيح خاص؛ @NotBlank(message = "لا يمكن أن يكون اسم المستخدم فارغًا") @ApiModelProperty("اسم المستخدم") اسم سلسلة خاصة؛ @الدقيقة(1) @ماكس(100) @ApiModelProperty("عمر المستخدم") عمر عدد صحيح خاص؛ @NotEmpty(message = "لا يمكن أن يكون صندوق البريد فارغًا") @ApiModelProperty("البريد الإلكتروني للمستخدم") @بريد إلكتروني البريد الإلكتروني الخاص بالسلسلة؛ @ApiModelProperty("0: لم يتم الحذف 1: تم الحذف") @TableLogic تم حذف عدد صحيح خاص؛ @NotBlank(message = "لا يمكن أن تكون كلمة المرور فارغة") @ApiModelProperty("كلمة مرور المستخدم") كلمة مرور سلسلة خاصة؛ }
رمز طبقة وحدة التحكم (تم حذف طبقة الخدمة):
@Api(علامات = "إدارة المستخدم") @RestController @RequestMapping("/MyWebsite/user") فئة عامة UserController { @Autowired userServiceImpl الخاص userServiceimpl; @ApiOperation(القيمة = "مستخدم جديد") @PostMapping عام int InsertUser (مستخدم مستخدم) { System.out.println("تم الإضافة بنجاح"); إرجاع userServiceimpl.insertUser(user); } @ApiOperation(القيمة = "تعديل معلومات المستخدم") @PutMapping تحديث المستخدم الفراغي العام (@RequestBody @Valid User user) { userServiceimpl.updateUser(user); System.out.println("تم التعديل بنجاح"); } @ApiOperation(القيمة = "حذف المستخدم"، الملاحظات = "حذف المستخدم بناءً على المعرف") @DeleteMapping("/{id}") public intحذفUser(@ApiParam("معرف المستخدم") @PathVariable @Valid Integer id) { System.out.println("تم الحذف بنجاح"); إرجاع userServiceimpl.deleteUser(id); } @ApiOperation(value = "الاستعلام عن كافة المستخدمين") @GetMapping القائمة العامة<User> allUser() { System.out.println("تم الاستعلام بنجاح"); إرجاع userServiceimpl.allUser(); } @ApiOperation(القيمة = "معرف استعلام المستخدم") @GetMapping("/{id}") المستخدم العام SelectById(@PathVariable("id") معرف السلسلة) { إرجاع userServiceimpl.selectById(id); } }
استخدم Postman للاختبار (يجب أن يتوافق مسار عنوان URL):
الاستعلام عن جميع المستخدمين : http://localhost:8081/MyWebsite/user
الرأس: نوع المحتوى = application/json
الجسم : خالي
تم الاستعلام بنجاح!
الاستعلام على أساس الهوية:
تم الاستعلام بنجاح!
إضافة مستخدم جديد :
تأكد من إضافة قاعدة البيانات بنجاح!
تعديل معلومات المستخدم (تعديل الاسم والعمر بالمعرف 7):
تأكد من نجاح تعديل قاعدة البيانات!
حذف المستخدمين بناءً على المعرف :
تأكد من حذف قاعدة البيانات بنجاح! (محذوف=1)
ربما قمت بحذف كامل البيانات مباشرة
عند الاستعلام أو التحديث أو حذف البيانات غير الموجودة (أو أن البيانات غير قانونية)، يفشل التنفيذ. هناك واجهات أخرى، مثل حذف جميع الواجهات، لم أختبرها واحدة تلو الأخرى هنا إذا كان هناك أي أخطاء أشير إليهم.
ما ورد أعلاه هو مقدمة تفصيلية لمواصفات الواجهة المريحة وأداة تصحيح أخطاء ساعي البريد!