Xây dựng FastAPI cho mô hình Deep Learning
2021-06-28
API - Application pesornal iterface (giao diện ứng dụng người dùng).
Bình thường xây dựng model nhận diện khuôn mặt chẳng hạn, không thể bảo người dùng (kiểm tra) cài cắm môi trường, chạy câu lệnh để test thử. Lúc này chúng ta cần API.
FastAPI có hỗ trợ:
- Đồng bộ Async
- Validate data (bên Flask phải thực hiện thủ công), dùng pydantic
- Tự sinh documents (hỗ trợ bên front end)
Cài đặt
pip install fastapi
pip install uvicorn
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
# # ko dùng asyns
# @app.get("/")
# def read_root():
# return {"Hello": "World"}
# @app.get("/items/{item_id}")
# def read_item(item_id: int, q: Optional[str] = None):
# return {"item_id": item_id, "q": q}
# dùng async
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
Chạy
uvicorn main:app --reload
The command uvicorn main:app refers to:
main
: filemain.py
app
: object được tạo trong file main.py ở dòngapp = FastAPI()
--reload
: server restart lại khi thay đổi code (khi development thôi)
Chạy thử http://127.0.0.1:8000/items/5?q=somequery
Như vậy chúng ta đã tạo API:
- Nhận HTTP requests trong đường dẫn
/
và/items/{item_id}
- Cả 2 paths đều lấu
GET
operations (HTTP methods) - Path
/item/{item_id}
có parameteritem_id
nhận vàoint
- Path
/item/{item_id}
có optionalstr
query parameter
Nếu muốn xem docs chỉ cần vào http://127.0.0.1:8000/docs
. Ở trong này có thể tìm hiểu được các lấy request, chạy thử luôn ví dụ, rất dễ hiểu.