3. FastAPI 开发 GET 请求,queryparams查询参数
前言
HTTP协议中,GET请求的参数放在 URL 后面,一般也叫query params 查询参数。
查询参数
# -*- coding:utf-8 -*-
from fastapi import FastAPI # 导入FastAPI
import uvicorn # uvicorn:主要用于加载和提供应用程序的服务器
from enum import Enum
app = FastAPI() # 创建一个app实例
data = ["北京", "上海", "广州", "深圳"]
@app.get("/items")
async def read_item(start: int = 0, end: int = 4):
return data[start: end]
if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
默认规定了两个参数,一个是start另一个是end,初始值是0和4,看下请求结果, Data 中的四个值都会返回回来。
增加参数看一下响应的结果,end=3,返回三个值。
需求1:要实现 start 必填,end 非必填
# -*- coding:utf-8 -*-
from fastapi import FastAPI # 导入FastAPI
import uvicorn # uvicorn:主要用于加载和提供应用程序的服务器
from typing import Optional
app = FastAPI() # 创建一个app实例
data = ["北京", "上海", "广州", "深圳"]
@app.get("/items")
async def read_item(start: int = 0, end: Optional[int] = None):
if end: # 如果输入end,则返回下一行 data[start: end];否则返回 data[start: -1]
return data[start: end]
return data[start: -1] # 默认返回到最后一个,-1 表示最后一个
if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
看一下效果,不输入 end
需求2:对输入的参数进行长度限制,限制长度 2-8位。
from fastapi import FastAPI, Query
import uvicorn
app = FastAPI()
@app.get("/items/")
def read_items(name: str = Query(..., min_length=2,max_length=8)):
results = {"items": [{"id": "001"}, {"name": "tester"}]}
if name:
results.update({"name": name})
return results
if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
- 当使用 Query 且需要声明一个值是必需的时,可以将 ... 用作第一个参数值。
- min_length :最小长度
- max_length :最大长度
1. 看结果,输入合法值。
- 输入不合法的值,输入 1 位。
- 输入不合法的值,输入 9 位。