美文网首页python-web开发
2、fastApi-请求参数

2、fastApi-请求参数

作者: 许忠慧 | 来源:发表于2023-07-28 21:37 被阅读0次

    一、路径参数

    路径参数就是必须在路径中定义参数

    1、基础语法

    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    # 传递一个参数
    @app.get("/{item1}")
    def root(item1):
        return f"请求时传递了一个参数: {item1}"
    

    效果预览:

    2、定义传入参数类型

    # 参数后加冒号,加参数类型进行参数类型定义
    def root(item1: int):
    
    数据类型 类型说明 举个例子
    str 字符串
    float 浮点数
    int 整数
    bool 布尔值
    UUID 一种标准的 "通用唯一标识符"。在请求和响应中将以 str 表示 123456
    datetime.datetime 日期时间格式 2008-09-15T15:53:00+05:00
    datetime.date 日期格式 2008-09-15
    datetime.time 时间格式 14:23:55.003
    datetime.timedelta 时间戳,在请求和响应中将表示为 float 代表总秒数
    frozenset 在请求和响应中,作为 set 对待
    bytes 标准的 Python bytes
    Decimal 标准的 Python Decimal,在请求和相应中被当做 float 一样处理

    定义了参数传入类型后,如果传入的参数不符合类型,则会出现如下提示:

    3、传递多个参数

    语法:

    # 传递多个参数
    @app.get("/{item1}&{item2}")
    def root(item1, item2):
        return f"请求时传递了两个参数. 参数1 = {item1}, 参数2 = {item2}"
    

    效果预览:

    4、多个参数2

    语法:

    # 查询参数
    @app.get("/{index}/info/{names}")
    def root(index: int, names: str):
        return f"请求时传递了两个参数. 参数1 = {index}, 参数2={names}"
    

    效果预览:

    多个参数2.png

    二、查询参数

    查询参数就是不用在路径中定义参数,而是直接将参数定义到方法中

    1、基础语法

    # 查询参数
    @app.get("/")
    def root(item1, item2):
        return f"请求时传递了两个参数. 参数1 = {item1}, 参数2 = {item2}"
    

    效果预览:

    查询参数.png

    此时,使用浏览器访问必须填参数,否则会报错

    2、默认值

    语法:

    # 查询参数
    @app.get("/")
    def root(item1: int=10, item2: str="参数2"):
        return f"请求时传递了两个参数. 参数1 = {item1}, 参数2={item2}"
    

    效果预览:

    有默认值的情况下,请求时可以不填对应参数

    3、可选参数

    语法:

    from typing import Union
    
    
    # 查询参数
    @app.get("/")
    def root(item1: int = 10, item2: Union[str, None] = None):
        return f"请求时传递了两个参数. 参数1 = {item1}, 参数2={item2}"
    

    效果:

    四、请求体

    一般用作json数传递

    from pydantic import BaseModel
    
    app = FastAPI()
    
    
    # 必须要继承 BaseModel
    class Item(BaseModel):
        name: str
        age: int
        sex: bool
    
    
    # 查询参数
    @app.post("/")
    def root(item: Item):
        return f"name = {item.name}, age={item.age}, sex = {item.sex}"
    

    同样的,如果请求体中定义的内容有默认值,则请求体参数在请求时时选填的

    相关文章

      网友评论

        本文标题:2、fastApi-请求参数

        本文链接:https://www.haomeiwen.com/subject/rohdpdtx.html