引言
本篇主要是以一个例子入门,稍微介绍了post请求和get请求,另外并对其进行了简单部署,以及它相关swagger文档说明。
代码编写
# 载入包
import uvicorn
from pydantic import BaseModel
from enum import Enum
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder
# 创建数据模型
class Item(BaseModel):
serverIp: str
serverPort: int
paramName: str
authInfo: str
sell: dict = {}
class ModelName(str, Enum):
height:int = 0
width: int = 0
TypeError:str = None
app = FastAPI()
@app.get("/")
async def root():
return 'Hello World!'
# ?cameraNum=xx&videoType=1&user=xx
@app.post("/api/v1/service/sell")
async def quickon(item: Item,Num: str,orderType: int,user: str):
item_dict = jsonable_encoder(item)
Num_value = Num
orderType_value = orderType
user_value = user
res = {}
if item_dict:
res["data"] = item_dict
res["url"] = item_dict["serverIp"] + ":" + str(item_dict["serverPort"]) + item_dict["paramName"]
return JSONResponse(res)
if __name__ == '__main__':
uvicorn.run(app,port=5000, host='127.0.0.1')
运行可以在pycharm中右键,也可以在终端下用命令:
uvicorn main:app --reload
上述代码因为都写在一个文件里面,可能看起来有点冗余,后续等看完文档再说。文件运行后,我们可以访问127.0.0.1:5000看我们的swagger接口文档以及redoc文档还有原生json格式:
swagger:127.0.0.1:5000/docs
redoc:http://127.0.0.1:5000/redoc
openapi:http://127.0.0.1:5000/openapi.json
然后我们就可以用postman、requests发同步请求或者自己用aiohttp发异步请求去测试:
后台接收的数据也非常简洁:
INFO: Started server process [728]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:5000 (Press CTRL+C to quit)
INFO: 127.0.0.1:56108 - "POST /api/v1/service/sell?Num=1235151rasadas&orderType=1&user=xx HTTP/1.1" 200
代码部署
gunicorn main:app -w 4 -k uvicorn.workers.icornWorker