12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from fastapi import Depends, FastAPI, Request, status
- from fastapi.encoders import jsonable_encoder
- from fastapi.exceptions import RequestValidationError
- from fastapi.staticfiles import StaticFiles
- from fastapi.responses import HTMLResponse
- from fastapi.templating import Jinja2Templates
- from fastapi.responses import JSONResponse
- from .case import case01, case02, case03
- app = FastAPI(
- debug=False,
- title="API Library",
- description="",
- version="1.0.0",
- )
- # 设置静态资源目录
- app.mount("/static", StaticFiles(directory="static"), name="static")
- # 设置页面模板目录
- templates = Jinja2Templates(directory="templates")
- # 定义接管RequestValidationError的方法,捕捉422报错并进行自定义处理
- @app.exception_handler(RequestValidationError)
- async def request_validation_exception_handler(request: Request, exc: RequestValidationError) -> JSONResponse:
- return JSONResponse(
- status_code=status.HTTP_200_OK,
- content={
- "code": 1,
- "message": "Parameter error",
- "data": jsonable_encoder(exc.errors())
- },
- )
- # 案例API
- app.include_router(
- case01.router,
- prefix="/api/case/01",
- tags=["案例01(小小图书)"],
- )
- app.include_router(
- case02.router,
- prefix="/api/case/02",
- tags=["案例02(网盘助手)"],
- )
- app.include_router(
- case03.router,
- prefix="/api/case/03",
- tags=["案例03(小小图书2)"],
- )
- # 其他API ...
- @app.get("/", response_class=HTMLResponse, include_in_schema=False)
- async def root(request: Request):
- attr_text = "API Library"
- return templates.TemplateResponse("index.html", {"request": request, "attr_text": attr_text})
|