Lumi adalah kerangka kerja nano untuk mengubah fungsi ularahan Anda menjadi API REST tanpa sakit kepala ekstra.
pip install lumiMari kita buat fungsi sederhana untuk menambahkan dua angka.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bSekarang, kami ingin mengekspos fungsi ini sebagai API REST. Kami dapat melakukan ini dengan mendaftarkan fungsi dengan 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 )Noice ?? API telah dihasilkan
Jalankan Sever By
python app.py
Anda akan melihat ini di terminal Anda
[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
Selamat ?. Server kami online.
Kode di atas akan menghasilkan API REST dengan detail berikut.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}Mari kita jalankan API dan uji.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
Keluaran
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}Sekarang Anda mungkin berpikir, nama fungsi akan selalu sama dengan rute. Tapi, Anda dapat mengubah rute dengan melewati parameter rute.
app . register ( add , route = "/addition" ) Secara default, metode permintaan adalah POST . Tapi, Anda dapat mengubahnya dengan meneruskan parameter metode. Saat ini, mendukung metode GET , POST , PUT dan 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 () ? Perhatikan sebelum menggunakan permintaan GET: jika Anda menggunakan metode GET
GET Badan Permintaan Dukungan.Kirim file ke pengguna dengan mengembalikan objek file.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) Secara default, mode debug True . Tapi, Anda dapat mengubahnya dengan melewati parameter debug.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| Kode status | Keterangan |
|---|---|
| 200 | Permintaan berhasil dieksekusi dan tidak ada kesalahan yang terjadi selama eksekusi fungsi |
| 500 | Permintaan diterima tetapi ada kesalahan selama eksekusi fungsi |
| 400 | Permintaan buruk (kemungkinan alasan - parameter yang diperlukan untuk fungsi belum disediakan) |
| 405 | Metode tidak diizinkan (LUMI hanya mendukung permintaan pos ) |
| 404 | Rute tidak memiliki fungsi yang terkait dengan itu |
| Kode Keluar | Keterangan |
|---|---|
| 0 | Tidak ada kesalahan |
| 1 | Kesalahan |
Catatan: Jika fungsi memiliki beberapa kesalahan, Anda dapat mengharapkan kode keluar menjadi 1 dan pesan kesalahan dalam respons.
Kontribusi selalu diterima!
Tanmoy Sarkar | Amir M. Ghanem | Matheus Felipe | 0xflotus |