本文主要记录fastapi实现一个接口多个请求方式的实现;例如同样的接口,既可以通过查询参数或路径参数的方式请求得到数据,也可以通过发送请求体的方式得到响应。
FastAPI内写接口都是通过@app.methods
的方式实现的,这样的方式限定了请求方式为某一种,在某些场景下不能满足我们的开发需求,所以需要实现同一路由多种请求方式。这里的@app
和methods
都是代指,官网上也没写,看了一下github和源码,大致弄明白了;
从这里就能看出来,上面的那种实现方式也是依赖于api_route
方法,所以直接利用api_route
方法实现即可。
def get(
self,
path: str,
*,
......
) -> Callable[[DecoratedCallable], DecoratedCallable]:
return self.api_route(
path=path,
response_model=response_model,
status_code=status_code,
tags=tags,
dependencies=dependencies,
summary=summary,
description=description,
response_description=response_description,
responses=responses,
deprecated=deprecated,
methods=["GET"],
operation_id=operation_id,
......
)
@app.api_route("/test", methods=["GET", "POST", "DELETE"])
async def test(request: Request):
return {"method": request.method}
如上,方法就很简单,利用
api_route
方法,设置路径,同时设置methods
列表即可,文档与测试如下:
感谢阅读!
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1gih9vl5y1mrs