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. 输入不合法的值,输入 1 位。

  1. 输入不合法的值,输入 9 位。

posted @ 2022-03-07 23:52  西瓜_皮  阅读(836)  评论(0编辑  收藏  举报