freeCodeCamp/guide/arabic/python/rest-api-with-falcon/index.md

88 lines
5.7 KiB
Markdown

---
title: REST APIs with Falcon
localeTitle: واجهات برمجة التطبيقات REST مع Falcon
---
## المقدمة
واجهات برمجة التطبيقات (REST) ​​هي مكوّن رئيسي لأي رصة متقنة الصنع ، ويصادف أن بيثون تمتلك بعض أطر العمل اللامعة لتكوين واجهات برمجة التطبيقات بسرعة. واحد من هذه الأطر يسمى [الصقر](https://falconframework.org) - وهو رائع! إنه في الأساس عبارة عن هيكل مجهري ، وهو مزود بعدد كبير من المزايا:
1. إنه سريع سريع حقا. تحقق من المعايير [هنا](https://falconframework.org/#sectionBenchmarks) .
2. يتم تعريف موارد HTTP على أنها فئات ، مع استخدام أساليب الفئات لعمليات REST المختلفة على هذه الموارد. هذا يساعد على الحفاظ على مصدر برنامج نظيف.
3. انها قابلة للتوسع جدا - تحقق من [هذا القسم](https://github.com/falconry/falcon/wiki/Complementary-Packages) على الويكي الخاص بهم ، للحصول على الشعور به.
4. يعتمد على WSGI - المعيار البايثوني لتطبيقات الويب - لذا فهو يعمل مع Python 2.6 و 2.7 و 3.3+. وإذا كنت بحاجة إلى المزيد من الأداء ، فقم بتشغيله باستخدام PyPy!
## ابدء
أولا ، دعونا نعد بيئتنا. شخصيا، وانها دائما كبيرة للعمل في البيئات الافتراضية - يمكنك استخدام `virtualenv` ، `virtualenvwrapper` أو `venv` . بعد ذلك ، قم بتثبيت Falcon باستخدام `pip` : `pip install falcon` .
سنقوم بتطوير نموذج صغير لواجهة برمجة التطبيقات (API) والذي يقوم بالتلاعب في المناطق الزمنية الأساسية بالنسبة لنا. سيعرض الوقت الحالي بالتوقيت العالمي المنسق (UTC) ، بالإضافة إلى وقت الحقن المقابل. ولتحقيق هذه الغاية ، سنقوم بالاستيلاء على مكتبة أنيقة تسمى `arrow` : `pip install arrow` .
يمكنك العثور على العينة النهائية على [https://github.com/rudimk/freecodecamp-guides-rest-api-falcon](https://github.com/rudimk/freecodecamp-guides-rest-api-falcon) .
## مصادر
فكر في مورد ككيان تحتاج إليه واجهة برمجة التطبيقات. في حالتنا ، سيكون أفضل مورد هو `Timestamp` . عادةً ما يكون توجيهنا شيئًا كالتالي:
`GET /timestamp
`
هنا ، `GET` هو فعل HTTP المستخدم لاستدعاء نقطة النهاية هذه ، و `/timestamp` هو عنوان URL نفسه. الآن بعد أن حصلنا على هذا الجزء من الطريق ، دعنا ننشئ وحدة نمطية!
`$ touch timestamp.py`
الوقت لاستيراد مكتبة الصقر:
`import json
import falcon
import arrow
`
لاحظ أننا قمنا أيضًا باستيراد حزمة `json` ومكتبة `arrow` . الآن ، دعنا نحدد فئة لموردنا:
`class Timestamp(object):
def on_get(self, req, resp):
payload = {}
payload['utc'] = arrow.utcnow().format('YYYY-MM-DD HH:mm:SS')
payload['unix'] = arrow.utcnow().timestamp
resp.body = json.dumps(payload)
resp.status = falcon.HTTP_200
`
دعنا نذهب من خلال هذا المقتطف. لقد قمنا بتعريف فئة `Timestamp` ، `on_get` أسلوب فئة يسمى `on_get` - تخبر هذه الدالة Falcon أنه عندما يتم إصدار طلب `GET` لنقطة نهاية لهذا المورد ، قم بتشغيل الوظيفة `on_get` وقم بتوفير كائنات الطلب والاستجابة كمعلمات. بعد ذلك ، إنه الإبحار السلس - نقوم بإنشاء قاموس فارغ ، ونملأه بالطوابع الزمنية UTC و UNIX الحالية ، وتحويله إلى JSON وإرفاقه بكائن الاستجابة.
بسيطة جدا ، أليس كذلك؟ لكن للأسف ، هذا ليس كل شيء. نحتاج الآن إلى إنشاء خادم Falcon وربط فئة الموارد التي قمنا بتعريفها للتو إلى نقطة نهاية فعلية.
`$ touch app.py`
الآن ، أضف الرمز أدناه:
`import falcon
from timestamp import Timestamp
api = application = falcon.API()
timestamp = Timestamp()
api.add_route('/timestamp', timestamp)
`
هنا ، قمنا بتعريف واجهة برمجة تطبيقات Falcon ، وقمنا بتهيئة مثيل لفئة الموارد التي أنشأناها في وقت سابق. بعد ذلك ، قمنا `/timestamp` نقطة النهاية `/timestamp` مع مثيل الفصل - والآن نحن جاهزون للنجاح! لاختبار هذا API تثبيت `gunicorn` ( `pip install gunicorn` ) ، وتشغيل `gunicorn app` . استخدم Postman أو `cURL` بسيط لاختبار ذلك:
`$ curl http://localhost:8000/timestamp
{"utc": "2017-10-20 06:03:14", "unix": 1508479437}
`
وهذا يفعل ذلك!
## المضي قدما
وبمجرد حصولك على تعليق Falcon ، فإن إنشاء RESTful APIs القوية التي تتفاعل مع قواعد البيانات أو طوابير الرسائل سهل للغاية. تحقق من [مستندات Falcon](https://falcon.readthedocs.io/en/stable/index.html) ، بالإضافة إلى PyPI للتعرف على وحدات Falcon المثيرة التي تستمر في الظهور.