tmp_app.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import uvicorn as uvicorn
  2. from fastapi import FastAPI, Request
  3. from pydantic.main import BaseModel
  4. from starlette.middleware.cors import CORSMiddleware
  5. from starlette.middleware.sessions import SessionMiddleware
  6. from starlette.responses import JSONResponse
  7. app = FastAPI(title="project name ", description="系统描述 ", version="v 0.0.0")
  8. app.add_middleware(SessionMiddleware, secret_key='123456hhh')
  9. app.add_middleware(
  10. CORSMiddleware,
  11. allow_origins=["*", ],
  12. allow_credentials=True,
  13. allow_methods=["*"],
  14. allow_headers=["*"],
  15. )
  16. @app.exception_handler(Exception)
  17. def validation_exception_handler(request, exc):
  18. """请求校验异常捕获; application/json """
  19. return JSONResponse({'message': "服务器内部错误", 'status_code': 500})
  20. @app.post('/post')
  21. async def test123(request: Request):
  22. # 获取所有参数
  23. params = dict(request.query_params)
  24. print(f"Query parameters: {params}")
  25. # 获取请求头
  26. headers = dict(request.headers)
  27. print(f"Headers: {headers}")
  28. # 获取请求体
  29. body = await request.json() # 如果是post form,请使用request.form()
  30. print(f"Body: {body}")
  31. return {'msg': 'hello world'}
  32. @app.get("/query")
  33. def query(uid: str):
  34. msg = f'uid为{uid}'
  35. return {'success': True, 'msg': msg}
  36. @app.get("/query/{uid}")
  37. def query(uid: str):
  38. msg = f'uid为{uid}'
  39. return {'success': True, 'msg': msg}
  40. @app.get("/test123")
  41. def test123():
  42. # 休眠20秒
  43. import time
  44. time.sleep(8)
  45. return 'ok'
  46. class People(BaseModel):
  47. name: str
  48. age: int
  49. address: str
  50. salary: float
  51. # json body请求
  52. @app.post("/insert")
  53. def insert(people: People):
  54. msg = f"名字:{people.name},年龄{people.age}"
  55. return msg
  56. if __name__ == '__main__':
  57. uvicorn.run(app='tmp_app:app', host="127.0.0.1", port=8000, reload=True, debug=True)
  58. # 启动命令
  59. # pip3 install -r /tmp/request.txt -i https://pypi.douban.com/simple/
  60. # pip3 install uvicorn gunicorn fastapi -i https://pypi.douban.com/simple/
  61. #
  62. # gunicorn tmp_app:app -b 0.0.0.0:8000 -w 4 -k uvicorn.workers.UvicornWorker -D # 不支持linux运行 -w 进程数
  63. # uvicorn tmp_app:app --reload --host 0.0.0.0 --port 8000