O Lumi é uma estrutura nano para converter suas funções Python em uma API REST sem dor de cabeça extra.
pip install lumiVamos criar uma função simples para adicionar dois números.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bAgora, queremos expor essa função como uma API REST. Podemos fazer isso registrando a função com 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 foi gerada
Executar o sever por
python app.py
Você vai ver isso em seu 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
Parabéns? Nosso servidor está online.
O código acima gerará uma API REST com os seguintes detalhes.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}Vamos executar a API e testá -la.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
Saída
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}Agora você pode pensar, o nome da função será sempre o mesmo que a rota. Mas você pode alterar a rota passando o parâmetro de rota.
app . register ( add , route = "/addition" ) Por padrão, o método de solicitação é POST . Mas você pode alterá -lo passando o parâmetro do método. Atualmente, ele suporta métodos GET , POST , PUT e 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 atenção antes de usar a solicitação GET: se você estiver usando o método GET
GET suporta o corpo da solicitação.Envie o arquivo para o usuário retornando o objeto do arquivo.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) Por padrão, o modo de depuração é True . Mas você pode alterá -lo passando o parâmetro de depuração.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| Código de status | Descrição |
|---|---|
| 200 | Solicitação executada com sucesso e nenhum erro aconteceu durante a execução da função |
| 500 | A solicitação foi recebida, mas houve um erro durante a execução da função |
| 400 | Solicitação ruim (possível motivo - os parâmetros necessários para a função não fornecidos) |
| 405 | Método não permitido (Lumi suporta apenas a solicitação de postagem ) |
| 404 | A rota não tem função associada a isso |
| Código de saída | Descrição |
|---|---|
| 0 | Sem erro |
| 1 | Erro |
Nota: Se a função tiver algum erro, você poderá esperar que o código de saída seja 1 e a mensagem de erro na resposta.
As contribuições são sempre bem -vindas!
Tanmoy Sarkar | Amir M. Ghanem | Matheus Felipe | 0xflotus |