FASTAPI系列 03-带参数的URL请求
前言
在开发一个restful接口时,我们会对接口请求传递参数,例如:
查询联系人person信息接口,请求方式get,请求地址:/api/person/{id}
删除联系人person信息接口, 请求方式delete, 请求地址:/api/person/{id}
在请求接口地址中,{id} 就是路径中的参数
一、示例
声明一个查询联系人信息的get请求,编写该接口,代码如下:
from fastapi import FastAPI
# 导入FastAPI模块并创建一个FastAPI实例
app = FastAPI()
# 使用装饰器@app.get("/second/{id}")定义一个GET请求处理函数(endpoint)
# 当用户访问应用的根路径 "/second{id}" 时,get_person_info函数会被调用
@app.get("/second/{id}")
async def get_person_info(id: int) -> dict:
# 请求路径中的id值作为参数传入到该函数
# 函数返回一个字典,内容{"name": "Teacher Li", "id": id},带入id的值
# 这个字典会被自动转换成JSON格式返回给客户端
return {"name": "Teacher Li", "id": id}
二、使用步骤
启动服务,在浏览器中输入 http://127.0.0.1:8000/second/1,会返回
2. 请求参数类型
在我们的代码中,已经规定了请求参数的id只能传int类型,如果在浏览器中访问时,我们请求参数传成string类型,将会发生什么呢?我们接下来试试吧!
返回代码(示例):
{
"detail":[
{
"type":"int_parsing",
"loc":[
"path",
"id"
],
"msg":"Input should be a valid integer, unable to parse string as an integer",
"input":"\"1\"",
"url":"https://errors.pydantic.dev/2.6/v/int_parsing"
}
]
}
它会告诉你,你path请求的参数为int, 输入的参数不是一个integer;
Docs文档
你会发现,在docs里面,已经表明id是必须传的参数,类型为integer,下面让我们通过API的交互,来试试吧;
我们可以清晰的看到,传入id为999后,返回的报文为
{"name": "Teacher Li", "id": 999}
总结
文章通过实例阐述了FastAPI框架下如何便捷、严格地处理URL路径参数,并利用自动化的API文档增强接口使用的可理解和可测试性。