في عالم تطوير البرمجيات الحديثة ، برزت واجهات برمجة التطبيقات Restful كحجرة لبناء تطبيقات قابلة للتطوير وفعالة وقابلة للتشغيل البيني. بصفتي مورد واجهات برمجة التطبيقات ، شاهدت بشكل مباشر القوة التحويلية لواجهة برمجة تطبيقات REST المصنوعة جيدًا في تمكين التواصل السلس بين أنظمة البرمجيات المختلفة. في هذه المدونة ، سأشارك رؤيتي حول كيفية إنشاء واجهة برمجة تطبيقات REST ، من المفاهيم الأساسية إلى خطوات التنفيذ العملية.
فهم الهندسة المعمارية المريحة
قبل الغوص في عملية الخلق ، من الضروري فهم ماهية البقية (نقل الحالة التمثيلية). REST هو أسلوب معماري يحدد مجموعة من القيود لاستخدامها لإنشاء خدمات الويب. تلتزم واجهة برمجة تطبيقات مريحة بهذه القيود ، والتي تشمل عدم الإقرار ، قابلية التخزين ، واجهة موحدة ، نظام طبقة ، ورمز - على الطلب (اختياري).
قيود الواجهة الموحدة مهمة بشكل خاص. وهذا يعني أن واجهة برمجة التطبيقات يجب أن يكون لها طريقة متسقة للتفاعل مع الموارد. الموارد هي التجريدات الرئيسية في الراحة ، ويمكن أن تكون أي شيء من ملف تعريف المستخدم إلى كتالوج المنتج. يتم تحديد كل مورد من خلال URI (معرف الموارد الموحد) ، ويتفاعل العملاء مع هذه الموارد باستخدام أساليب HTTP القياسية مثل GET ، POST ، PUT ، DELETE.
التخطيط لواجهة برمجة تطبيقات الراحة الخاصة بك
الخطوة الأولى في إنشاء API REST هي التخطيط. يتضمن ذلك تحديد الموارد التي ستعرضها واجهة برمجة التطبيقات الخاصة بك ، والعمليات التي يمكن تنفيذها على هذه الموارد ، وتنسيقات البيانات التي سيتم استخدامها للطلبات والاستجابات.
تحديد الموارد
ابدأ بتحديد الكيانات الرئيسية في نظامك الذي تريد فضحه عبر API. على سبيل المثال ، إذا كنت تقوم ببناء واجهة برمجة تطبيقات E - Commerce ، فقد تشمل مواردك المنتجات والعملاء والطلبات. يجب أن يكون لكل مورد اسم واضح وذات مغزى ، ويجب أن يعكس URI علاقته الهرمية مع الموارد الأخرى. على سبيل المثال ، قد يكون URI لمنتج معين/المنتجات/{product_id}، أين{product_id}هو معرف فريد للمنتج.
تحديد العمليات
بمجرد تحديد مواردك ، تحتاج إلى تحديد العمليات التي يمكن تنفيذها عليها. فيما يلي رسم خرائط شائع لطرق HTTP للعمليات:
- يحصل: استرداد مورد أو مجموعة من الموارد. على سبيل المثال،
الحصول على /المنتجاتيمكن إرجاع قائمة بجميع المنتجات ، بينماالحصول على /منتجات /{product_id}سيعود تفاصيل منتج معين. - بريد: إنشاء مورد جديد. على سبيل المثال،
بعد /المنتجاتمع حمولة JSON التي تحتوي على تفاصيل المنتج من شأنها أن تنشئ منتجًا جديدًا في النظام. - يضع: تحديث مورد موجود.
put /products /{product_id}مع تفاصيل المنتج المحدثة في الحمولة الصافية من شأنها أن تكتب معلومات المنتج الحالية. - يمسح: إزالة مورد.
حذف /منتجات /{product_id}سوف يحذف المنتج المحدد من النظام.
اختيار تنسيقات البيانات
JSON (تدوين كائن JavaScript) هو تنسيق البيانات الأكثر شيوعًا لواجهة برمجة تطبيقات REST بسبب بساطتها ودعمها الواسع عبر لغات البرمجة المختلفة. XML هو خيار آخر ، لكنه أكثر مطوّلة. عند تصميم واجهة برمجة التطبيقات الخاصة بك ، حدد تنسيق البيانات الذي ستستخدمه للطلبات والاستجابات وتوثيقها بوضوح.
تصميم نقاط نهاية API
بعد التخطيط ، حان الوقت لتصميم نقاط نهاية API. نقطة النهاية هي URI محددة يمكن للعملاء الوصول إليها لإجراء عملية على مورد.
اتفاقيات تسمية
استخدم الأسماء الجمع لأسماء الموارد في URIS الخاصة بك. على سبيل المثال،/منتجاتبدلاً من/منتج. هذا يوضح أن نقطة النهاية تمثل مجموعة من الموارد. أيضًا ، استخدم الواصلة لفصل الكلمات في URIs لتحسين قابلية القراءة ، بدلاً من التأكيد أو الحصرة.
معلمات الاستعلام
للتصفية والفرز والترقيم ، استخدم معلمات الاستعلام. على سبيل المثال ، للحصول على قائمة بالمنتجات المرتبة حسب السعر بترتيب تصاعدي ، يمكنك استخدام URI/منتجات؟ الفرز = السعر والطلب = ASC. لتنفيذ ترقيم الصفحات ، يمكنك استخدام معلمات مثلحدوالإزاحة، مثل/منتجات؟للحصول على الصفحة الثالثة من 10 منتجات لكل منهما.


تنفيذ API REST
هناك العديد من لغات البرمجة والأطر المتاحة لتنفيذ واجهات برمجة تطبيقات REST. هنا ، سأستخدم Python و Flask Framework كمثال.
من Flask Import Flask ، jsonify ، request app = flask (__ name__) # mock data for products = [{"id" ، "name": "Product 1" ، "Price": 10.99} ، {"id": 2 ، "name": get_products (): return jsonify (منتجات) # احصل على منتج واحد @app.route ('/products/<int: product_id>' ، methods = ['get' 404 # قم بإنشاء منتج جديد @app.route ('/products' ، methods = ['post']) def create_product (): new_product = request.get_json () new_product ["id"] = len (products) + 1 products.append (new_product) return jsonify (new_product) ، 201 طرق = ['put']) def update_product (product_id): product = next ((p for p in products if p ["id"] == product_id) ، none) إذا تم تحديث exptated_data = request.get_json () product.update (updated_data) إرجاع jsonify (المنتج) return jsonify ({"message" @app.route ('/products/<int: product_id>' ، methods = ['delete']) def def_product (product_id): global products products = [p for p in products if p ["id"]! = product_id] return jsonify ({"message":
في هذا المثال ، أنشأنا واجهة برمجة تطبيقات بسيطة لإدارة المنتجات. يحتوي API على نقاط نهاية للحصول على جميع المنتجات ، والحصول على منتج واحد ، وإنشاء منتج جديد ، وتحديث منتج موجود ، وحذف منتج.
معالجة الأخطاء والتحقق منها
يجب على واجهة برمجة تطبيقات REST القوية التعامل مع الأخطاء بأمان وتوفير رسائل خطأ ذات معنى للعملاء. عند حدوث خطأ ، قم بإرجاع رمز حالة HTTP المناسب مع كائن JSON يحتوي على رسالة خطأ. على سبيل المثال ، إذا حاول أحد العميل الوصول إلى مورد غير موجود ، فأرد رمز الحالة 404 مع رسالة مثل "مورد غير موجود".
التحقق من الصحة هو أيضا أمر بالغ الأهمية. قبل إجراء أي عمليات على البيانات المستلمة من العملاء ، تحقق من صحةها لضمان تلبية المتطلبات. على سبيل المثال ، إذا كان من المتوقع أن يكون سعر المنتج رقمًا إيجابيًا ، فتأكد من أن القيمة المستلمة في الطلب هي بالفعل رقم إيجابي.
اعتبارات الأمن
يعد الأمان أولوية قصوى عند إنشاء واجهة برمجة تطبيقات REST. فيما يلي بعض التدابير الأمنية التي يجب مراعاتها:
المصادقة
استخدم آليات المصادقة مثل مفاتيح API أو OAUTH أو JWT (JSON Web Tokens) لضمان أن العملاء المعتمدين فقط يمكنهم الوصول إلى واجهة برمجة التطبيقات الخاصة بك. مفاتيح API سهلة التنفيذ ولكن قد لا تكون آمنة مثل OAuth أو JWT. Oauth هو بروتوكول يستخدم على نطاق واسع للوصول المفوض ، في حين أن JWT هو رمز ذاتي يحتوي على الطلبات للمصادقة على الطلبات.
إذن
بمجرد مصادقة العميل ، تحتاج إلى تحديد الإجراءات المسموح لها بأداءها. هذا هو المكان الذي يأتي فيه التفويض. على سبيل المثال ، قد يتمكن المستخدم العادي فقط من عرض ملفه الشخصي ، بينما يمكن للمسؤول عرض جميع ملفات تعريف المستخدم وتعديلها.
إدخال تطهير
لمنع الهجمات مثل حقن SQL أو البرمجة النصية للموقع (XSS) ، تعقيم جميع المدخلات المستلمة من العملاء. هذا يعني إزالة أو ترميز أي شخصيات ضارة محتملة.
الوثائق
الوثائق الجيدة ضرورية لنجاح واجهة برمجة تطبيقات REST الخاصة بك. يساعد العملاء على فهم كيفية استخدام واجهة برمجة التطبيقات الخاصة بك وما يمكن توقعه منه. يمكنك استخدام أدوات مثل Swagger أو OpenAPI لإنشاء وثائق تفاعلية لواجهة برمجة التطبيقات الخاصة بك. يجب أن تتضمن الوثائق تفاصيل حول نقاط النهاية ، وطرق HTTP المدعومة ، وتنسيقات بيانات الطلب والاستجابة ، وأي معلمات أو رؤوس استعلام تحتاج إلى استخدام.
خاتمة
يتطلب إنشاء API REST التخطيط الدقيق والتصميم والتنفيذ والاختبار. باتباع مبادئ الهندسة المعمارية المريحة ، وتحديد الموارد والعمليات الواضحة ، والنظر في الأمن والوثائق ، يمكنك بناء واجهة برمجة تطبيقات عالية الجودة تلبي احتياجات عملائك.
كمورد واجهات برمجة التطبيقات ، نقدم مجموعة واسعة من واجهات برمجة التطبيقات ، بما في ذلكعالي الجودة Hydrobromide Lappaconitine ، C32H45BRN2O8 ، CAS: 97792 - 45 - 5وalbendazole ذات النوعية الجيدة ، CAS: 54965 - 21 - 8 ، C12H15N3O2S، وRifampicin من الدرجة العلوية ، 13292 - 46 - 1 GMP Standard ، C43H58N4O12. إذا كنت مهتمًا بواجهة برمجة التطبيقات الخاصة بنا أو لديك أي أسئلة حول إنشاء واجهة برمجة تطبيقات REST الخاصة بك ، فلا تتردد في الاتصال بنا للمشتريات ومزيد من المناقشات.
مراجع
- ريتشاردسون ، ليونارد ، وسام روبي. خدمات الويب المريحة. O'Reilly Media ، 2007.
- فيلدنج ، روي توماس. الأنماط المعمارية وتصميم بنيات البرمجيات القائمة على الشبكة. أطروحة الدكتوراه ، جامعة كاليفورنيا ، إيرفين ، 2000.
