Skip to content

Latest commit

 

History

History
210 lines (150 loc) · 4.69 KB

548-588325-查询参数_Query_Parameter.sy.md

File metadata and controls

210 lines (150 loc) · 4.69 KB
show version enable_checker
step
1.0
true

fastapi

回忆

  • 上次了解到
    • 路径可以设置类型
    • 甚至是自定义类型
    • 比如枚举类型
    • 类型错了会报错
    • 函数定义的次序非常重要
  • 除了路径参数之外
    • 还有什么样的参数吗?

请求参数

  • 如果一个参数不是路径参数
    • 那么他应该是一个查询参数
from fastapi import FastAPI

app = FastAPI()

fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]


@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):
    return fake_items_db[skip : skip + limit]

图片描述

查询参数

  • 查询参数的套路
    • 查询参数一般在问号之后
    • 使用&进行分割

图片描述

默认参数

图片描述

  • skip
    • 默认参数为0
    • 类型为int
  • limit
    • 默认参数为10
    • 类型为int

图片描述

可选的参数

  • 访问参数short为Bool类型的参数
from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Union[str, None] = None, short: bool = False):
    item = {"item_id": item_id}
    if q:
        item.update({"q": q})
    if not short:
        item.update(
            {"description": "This is an amazing item that has a long description"}
        )
    return item

具体效果

图片描述

图片描述

  • 默认参数

图片描述

  • 两个参数

图片描述

多个参数

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
    user_id: int, item_id: str, q: Union[str, None] = None, short: bool = False
):
    item = {"item_id": item_id, "owner_id": user_id}
    if q:
        item.update({"q": q})
    if not short:
        item.update(
            {"description": "This is an amazing item that has a long description"}
        )
    return item

图片描述

必须要填写的查询参数

from fastapi import FastAPI

app = FastAPI()


@app.get("/items/{item_id}")
async def read_user_item(item_id: str, needy: str):
    item = {"item_id": item_id, "needy": needy}
    return item
  • 没有默认值的话

图片描述

  • 必须要给参数

图片描述

  • 不给会报错

多个参数练习

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/items/{item_id}")
async def read_user_item(
    item_id: str, needy: str, skip: int = 0, limit: Union[int, None] = None
):
    item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit}
    return item
  • item_id
    • 路径参数
    • 类型为str
  • needy
    • 类型为查询参数
    • 类型为str
    • 没有默认值
  • skip
    • 类型为整型
    • 默认值为0
  • limit
    • 类型为int
    • 默认值为None
    • 是可选参数

总结🤔

  • 这次我们研究了路径参数之外的参数
  • 查询参数
    • 可以声明类型
    • 可以有默认值
    • 可以是可选的
  • url中的请求我们就了解到这里了
  • 下次看看还有什么能够放到请求里面吗?
  • 下次再说👋