Lumi ist ein Nano -Framework, um Ihre Python -Funktionen ohne zusätzliche Kopfschmerzen in eine REST -API umzuwandeln.
pip install lumiErstellen wir eine einfache Funktion, um zwei Zahlen hinzuzufügen.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bJetzt wollen wir diese Funktion als REST -API aufdecken. Wir können dies tun, indem wir die Funktion mit Lumi registrieren.
# 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 wurde generiert
Durchführen
python app.py
Sie werden dies in Ihrem Terminal sehen
[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
Glückwunsch ?. Unser Server ist online.
Der obige Code generiert eine REST -API mit den folgenden Details.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}Lassen Sie uns die API ausführen und sie testen.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
Ausgabe
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}Jetzt denken Sie vielleicht, dass der Funktionsname immer wie die Route entspricht. Sie können jedoch die Route ändern, indem Sie den Routenparameter übertragen.
app . register ( add , route = "/addition" ) Standardmäßig ist die Anforderungsmethode POST . Sie können es jedoch ändern, indem Sie den Methodenparameter übergeben. Derzeit unterstützt es Methoden GET , POST , PUT und PATCH -Methoden.
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 () ? Achten Sie vor der Verwendung von GET -Anforderung: Wenn Sie GET -Methode verwenden
GET Anforderungsbehörde nicht unterstützt wird.Senden Sie die Datei an den Benutzer, indem Sie das Dateiobjekt zurückgeben.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) Standardmäßig ist der Debug -Modus True . Sie können es jedoch ändern, indem Sie den Debug -Parameter übergeben.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| Statuscode | Beschreibung |
|---|---|
| 200 | Anfragen erfolgreich ausgeführt und während der Funktionsausführung kein Fehler aufgetreten |
| 500 | Die Anfrage wurde empfangen, aber es gab einen Fehler während der Funktionsausführung |
| 400 | Schlechte Anfrage (möglicher Grund - Die erforderlichen Parameter für die Funktion haben nicht bereitgestellt) |
| 405 | Methode nicht erlaubt (Lumi unterstützt nur die Postanforderung ) |
| 404 | Die Route hat keine Funktion, die damit verbunden ist |
| Code beenden | Beschreibung |
|---|---|
| 0 | Kein Fehler |
| 1 | Fehler |
HINWEIS: Wenn die Funktion einen Fehler hat, können Sie erwarten, dass der Exit -Code 1 und die Fehlermeldung in der Antwort ist.
Beiträge sind immer willkommen!
Tanmoy Sarkar | Amir M. Ghanem | Matheus Felipe | 0xflotus |