fastapi 的路径请求参数类似于 Flask,如果有Flask基础理解起来会很快。两者都是使用的装饰器来完成路径的参数描述。
下面代码是一个简单get请求示例:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/demo/")
async def getdemo():
return {"message": "这是个demo"}
if __name__ == "__main__":
uvicorn.run(app)
现在打开控制台输出的网站。然后加上docs 就可以看到fastapi提供的交互文档。如下图:
点击右上角的 try it out 可以发送请求。
然后点击下方的execute 就可以发送请求。可以看到信息还是很丰富的。可以看到请求的url地址和返回值内容。
如果需要使用路径参数,只需要在后面增加{参数名称}就可以了。
@app.get("/demo02/{demo_name}")
async def getdemo02(demo_name):
return {"message": demo_name}
再来看 交互文档 ps:不要忘记重启服务
可以看到我们的参数名称了,而且是一个必填项。填入名称。结果返回正确。
还可以通过类型绑定的方式对参数进行类型的限定。
@app.get("/demo03/{age}")
async def getdemo03(age: int):
return {"message": "干脆面永远{}岁".format(age)}
当我们给age属性赋值类型为字符串事 交互文档会对我们进行限制,并且明确的给我们提示说类型是integer类型:
还有一个注意点。FastAPI的路径查找遵循自顶而下的顺序。如果请求url地址匹配到了前面的,则不会再去请求后一个请求。如图所示:
请求的是demo04/hello 同时满足两个函数。但是只请求了第一个。但是如果请求只满足第二个请求的条件时,就只会去请求第二个。