Lumi est un framework nano pour convertir vos fonctions Python en une API REST sans aucun mal de tête supplémentaire.
pip install lumiCréons une fonction simple pour ajouter deux nombres.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bMaintenant, nous voulons exposer cette fonction comme une API REST. Nous pouvons le faire en enregistrant la fonction avec 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 ?? L'API a été générée
Courir de la grave
python app.py
Vous allez voir cela dans votre terminal
[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
Félicitations ?. Notre serveur est en ligne.
Le code ci-dessus générera une API REST avec les détails suivants.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}Exécutons l'API et testons-le.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
Sortir
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}Maintenant, vous pensez peut-être que le nom de la fonction sera toujours le même que l'itinéraire. Mais, vous pouvez modifier l'itinéraire en passant le paramètre de l'itinéraire.
app . register ( add , route = "/addition" ) Par défaut, la méthode de demande est POST . Mais, vous pouvez le changer en passant le paramètre de la méthode. Actuellement, il prend en charge les méthodes GET , POST , PUT et 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 () ? Faites attention avant d'utiliser la demande de Get: si vous utilisez la méthode GET
GET ne prend pas en charge le corps de la demande.Envoyer un fichier à l'utilisateur en renvoyant l'objet de fichier.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) Par défaut, le mode de débogage est True . Mais, vous pouvez le changer en passant le paramètre de débogage.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| Code d'état | Description |
|---|---|
| 200 | Demandez avec succès et aucune erreur ne s'est produite lors de l'exécution de la fonction |
| 500 | La demande a été reçue mais il y a eu une erreur pendant l'exécution de la fonction |
| 400 | Mauvaise demande (raison possible - les paramètres requis pour la fonction n'ont pas fourni) |
| 405 | Méthode non autorisée (Lumi prend en charge uniquement la demande de post ) |
| 404 | L'itinéraire n'a aucune fonction associée à cela |
| Code de sortie | Description |
|---|---|
| 0 | Aucune erreur |
| 1 | Erreur |
Remarque: Si la fonction a une erreur, vous pouvez vous attendre à ce que le code de sortie soit 1 et le message d'erreur dans la réponse.
Les contributions sont toujours les bienvenues!
Tanmoy Sarkar | Amir M. Ghanem | Matheus Felipe | 0xflotus |