import uvicorn as uvicorn from fastapi import FastAPI, Request from pydantic.main import BaseModel from starlette.middleware.cors import CORSMiddleware from starlette.middleware.sessions import SessionMiddleware from starlette.responses import JSONResponse app = FastAPI(title="project name ", description="系统描述 ", version="v 0.0.0") app.add_middleware(SessionMiddleware, secret_key='123456hhh') app.add_middleware( CORSMiddleware, allow_origins=["*", ], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.exception_handler(Exception) def validation_exception_handler(request, exc): """请求校验异常捕获; application/json """ return JSONResponse({'message': "服务器内部错误", 'status_code': 500}) @app.post('/post') async def test123(request: Request): # 获取所有参数 params = dict(request.query_params) print(f"Query parameters: {params}") # 获取请求头 headers = dict(request.headers) print(f"Headers: {headers}") # 获取请求体 body = await request.json() # 如果是post form,请使用request.form() print(f"Body: {body}") return {'msg': 'hello world'} @app.get("/query") def query(uid: str): msg = f'uid为{uid}' return {'success': True, 'msg': msg} @app.get("/query/{uid}") def query(uid: str): msg = f'uid为{uid}' return {'success': True, 'msg': msg} @app.get("/test123") def test123(): # 休眠20秒 import time time.sleep(8) return 'ok' class People(BaseModel): name: str age: int address: str salary: float # json body请求 @app.post("/insert") def insert(people: People): msg = f"名字:{people.name},年龄{people.age}" return msg if __name__ == '__main__': uvicorn.run(app='tmp_app:app', host="127.0.0.1", port=8000, reload=True, debug=True) # 启动命令 # pip3 install -r /tmp/request.txt -i https://pypi.douban.com/simple/ # pip3 install uvicorn gunicorn fastapi -i https://pypi.douban.com/simple/ # # gunicorn tmp_app:app -b 0.0.0.0:8000 -w 4 -k uvicorn.workers.UvicornWorker -D # 不支持linux运行 -w 进程数 # uvicorn tmp_app:app --reload --host 0.0.0.0 --port 8000