Lumi هو إطار عمل نانو لتحويل وظائف Python إلى واجهة برمجة تطبيقات REST دون أي صداع إضافي.
pip install lumiدعنا ننشئ وظيفة بسيطة لإضافة رقمين.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bالآن ، نريد أن نفضح هذه الوظيفة كأو هيئة واجهة برمجة تطبيقات REST. يمكننا القيام بذلك عن طريق تسجيل الوظيفة مع Lumi.
# app.py
from lumi import Lumi
app = Lumi ()
app . register ( add ) # Registering the function
app . register ( subtract )
app . runServer ( host = "127.0.0.1" , port = 8080 )نويس ؟؟ تم إنشاء API
ركض
python app.py
سترى هذا في المحطة الخاصة بك
[2022-11-24 17:32:08 +0530] [10490] [INFO] Starting gunicorn 20.1.0
[2022-11-24 17:32:08 +0530] [10490] [INFO] Listening at: http://127.0.0.1:8080 (10490)
[2022-11-24 17:32:08 +0530] [10490] [INFO] Using worker: sync
[2022-11-24 17:32:08 +0530] [10492] [INFO] Booting worker with pid: 10492
...
...
[2022-11-24 17:32:08 +0530] [10500] [INFO] Booting worker with pid: 10500
مبروك؟. خادمنا متصل بالإنترنت.
سيقوم الرمز أعلاه بإنشاء واجهة برمجة تطبيقات REST مع التفاصيل التالية.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}دعنا ندير واجهة برمجة التطبيقات ونختبرها.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
الإخراج
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}الآن قد تعتقد ، أن اسم الوظيفة سيكون دائمًا نفس المسار. ولكن ، يمكنك تغيير المسار عن طريق تمرير المعلمة المسار.
app . register ( add , route = "/addition" ) بشكل افتراضي ، طريقة الطلب هي POST . ولكن ، يمكنك تغييره عن طريق تمرير المعلمة الطريقة. حاليًا ، يدعم GET ، POST ، PUT و PATCH أساليب التصحيح.
from lumi import Lumi , RequestMethod
app = Lumi ()
def add ( a , b ):
return a + b
# Default : Register function for POST method
app . register ( add )
# Register function for GET method
app . register ( add , request_method = RequestMethod . GET )
# Register function for POST method
app . register ( add , request_method = RequestMethod . POST )
# Register function for PUT method
app . register ( add , request_method = RequestMethod . PUT )
# Register function for PATCH method
app . register ( add , request_method = RequestMethod . PATCH )
app . runServer () ؟ انتبه قبل استخدام طلب الحصول: إذا كنت تستخدم GET Method
GET لا تدعم طلب طلب طلب.إرسال ملف إلى المستخدم عن طريق إرجاع كائن الملف.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) بشكل افتراضي ، وضع التصحيح True . ولكن ، يمكنك تغييره عن طريق تمرير معلمة التصحيح.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| رمز الحالة | وصف |
|---|---|
| 200 | الطلب الذي تم تنفيذه بنجاح ولم يحدث أي خطأ أثناء تنفيذ الوظيفة |
| 500 | تم استلام الطلب ولكن كان هناك خطأ أثناء تنفيذ الوظيفة |
| 400 | طلب سيء (السبب المحتمل - لم يتم توفير المعلمات المطلوبة للوظيفة) |
| 405 | الطريقة غير مسموح بها (Lumi يدعم فقط طلب البريد ) |
| 404 | لا يحتوي المسار على وظيفة مرتبطة بذلك |
| رمز الخروج | وصف |
|---|---|
| 0 | لا خطأ |
| 1 | خطأ |
ملاحظة: إذا كانت الوظيفة تحتوي على بعض الخطأ ، فيمكنك توقع أن يكون رمز الخروج 1 ورسالة الخطأ في الاستجابة.
المساهمات دائما موضع ترحيب!
تانموي ساركار | أمير م. غانم | ماثيوس فيليبي | 0xflotus |