Lumi es un marco nano para convertir sus funciones de Python en una API REST sin ningún dolor de cabeza adicional.
pip install lumiCreemos una función simple para agregar dos números.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bAhora, queremos exponer esta función como una API REST. Podemos hacer esto registrando la función con 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 ?? Se ha generado API
Correr por
python app.py
Vas a ver esto en tu 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
¿Felicidades?. Nuestro servidor está en línea.
El código anterior generará una API REST con los siguientes detalles.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}Ejecutemos la API y pruebemos.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
Producción
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}Ahora puede pensar, el nombre de la función siempre será el mismo que la ruta. Pero, puede cambiar la ruta pasando el parámetro de ruta.
app . register ( add , route = "/addition" ) Por defecto, el método de solicitud es POST . Pero, puede cambiarlo pasando el parámetro del método. Actualmente, admite métodos GET , POST , PUT y 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 () ? Preste atención antes de usar la solicitud Get: si está utilizando el método GET
GET el cuerpo de la solicitud de no admitir.Envíe el archivo al usuario devolviendo el objeto de archivo.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) Por defecto, el modo de depuración es True . Pero, puede cambiarlo pasando el parámetro de depuración.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| Código de estado | Descripción |
|---|---|
| 200 | Solicitud ejecutada con éxito y no ocurrió ningún error durante la ejecución de la función |
| 500 | Se recibió la solicitud, pero hubo un error durante la ejecución de la función |
| 400 | Mala solicitud (posible razón: los parámetros requeridos para la función no han proporcionado) |
| 405 | Método no permitido (Lumi solo admite la solicitud posterior ) |
| 404 | La ruta no tiene función asociada con eso |
| Código de salida | Descripción |
|---|---|
| 0 | Sin error |
| 1 | Error |
Nota: Si la función tiene algún error, puede esperar que el código de salida sea 1 y el mensaje de error en la respuesta.
¡Las contribuciones siempre son bienvenidas!
Tanmoy Sarkar | Amir M. Ghanem | Matheus Felipe | 0xflotus |