Lumi - это Nano Framework для преобразования ваших функций Python в API REST без дополнительной головной боли.
pip install lumiДавайте создадим простую функцию, чтобы добавить два числа.
def add ( a , b ):
return a + b
def subtract ( a , b ):
return a - bТеперь мы хотим разоблачить эту функцию как API REST. Мы можем сделать это, зарегистрировав функцию с 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 )Нойс ?? API был сгенерирован
Пробежать
python app.py
Вы увидите это в своем терминале
[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
Поздравляю? Наш сервер онлайн.
Приведенный выше код будет генерировать API REST со следующими деталями.
127.0.0.1:8080/addPOST{"a": 1, "b": 2}Давайте запустим API и проверим его.
curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://127.0.0.1:8080/add
Выход
{
"exit_code" : 0 ,
"status_code" : 200 ,
"result" : 3 ,
"error" : " "
}Теперь вы можете подумать, что имя функции всегда будет таким же, как маршрут. Но вы можете изменить маршрут, пропустив параметр маршрута.
app . register ( add , route = "/addition" ) По умолчанию метод запроса является POST . Но вы можете изменить его, передавая параметр метода. В настоящее время он поддерживает методы GET , POST , PUT и 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 () ? Обратите внимание перед использованием запроса GET: если вы используете метод GET
GET не поддерживает корпус запроса.Отправить файл пользователю, вернув объект файла.
from lumi import Lumi , RequestMethod
app = Lumi ()
def download_file ():
return open ( "file.txt" , "rb" ) # Return file object
app . register ( download_file ) По умолчанию режим отладки True . Но вы можете изменить его, передавая параметр отладки.
# app.py
from lumi import Lumi
app = Lumi ( debug = False )
...| Код статуса | Описание |
|---|---|
| 200 | Запрос успешно выполнен, и никакой ошибки не произошло во время выполнения функции |
| 500 | Запрос был получен, но во время выполнения функции была ошибка |
| 400 | Плохой запрос (возможная причина - требуемые параметры для функции не предоставлены) |
| 405 | Метод не разрешен (Lumi только поддерживает запрос POST ) |
| 404 | Маршрут не имеет функции, связанной с этим |
| Код выхода | Описание |
|---|---|
| 0 | Нет ошибки |
| 1 | Ошибка |
Примечание. Если функция имеет некоторую ошибку, вы можете ожидать, что код выхода будет 1 и сообщение об ошибке в ответе.
Вклад всегда приветствуются!
Танмой Саркар | Амир М. Ганем | Матеус Фелипе | 0xflotus |