美文网首页fastapi学习文档
fastapi介绍(三):简单应用升级

fastapi介绍(三):简单应用升级

作者: warmsirius | 来源:发表于2019-09-25 07:59 被阅读0次

    一、main.py升级

    现在我们把笔记(二)中的main.py修改一下代码:

    使用Pydantic模块,实现用标准的python类来声明请求体

    from fastapi import FastAPI
    from pydantic import BaseModel
    
    app = FastAPI()
    
    
    class Item(BaseModel):
        name: str
        price: float
        is_offer: bool = None
    
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
    
    
    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: str = None):
        return {"item_id": item_id, "q": q}
    
    
    @app.put("/items/{item_id}")
    def update_item(item_id: int, item: Item):
        return {"item_name": item.name, "item_id": item_id}
    

    二、API交互文档

    现在打开 http://127.0.0.1:8000/docs.

    • 交互的API文档已经被更改了,包含了新的内容:
    • 点击上面的 "Try it out",它提示你填入参数,并且该参数会传入到这个API接口
    • 然后点击这个 "Execute" 按钮,然后用户界面会和你的API进行交互,发送该参数,并且会把返回的结果显示在屏幕上。

    三、可选的API交互文档

    四、概括

    总的来说,你一旦定义了参数的类型,或者是请求体的类型等作为视图函数的参数,你就相当于定义了标准的Python类型。

    你不必去学一个新语法、新方法或者一个指定库的类等等。只需要使用标准的Python3.6+的版本即可。

    例如,对于一个整数:

    item_id: int
    

    或者对于一个更复杂的Item的模型:

    item: Item
    

    并且通过这个单一的申明,你可以获得:

    1. 编辑器支持:

    • 完整性检查
    • 类型检查

    2. 数据校验:

    • 数据无效时自动清除错误
    • 即使是深层嵌套的JSON对象,也支持验证

    3. 输入数据的转换:将网络传输的数据转变成Python数据和Python类型

    • JSON
    • 路径的参数
    • 查询的参数
    • Cookies
    • Header:请求头
    • Forms:表单
    • Files:文件类型

    4. 输出数据的转换:将Python数据或Python类型转换成网络传输的数据(转变为JSON)

    • 转变Python 类型(str, int, float, list, etc)
    • 日期时间类型
    • UUID类型
    • 数据模型类
    • ....等等

    5. 自动交互的API文档,可以有两种用户交互界面

    • Swagger UI.
    • ReDoc.

    回到当前项目

    我们回到之前的fastapi的项目代码,FastAPI将会:

      1. 验证在GET/PUT请求是否有一个item_id在path中
      1. 验证在GET/PUT请求中,item_id是不是整数类型,如果不是,则客户端会看见一个有用的错误信息
      1. 检查url中是否有选择查询参数q在GET请求中,该参数默认是None,是可选参数,如果不是None,那么默认为必须参数
      1. 对于PUT请求: /items/{item_id}, 请求体默认为JSON
      • 检查是否必选参数name属性,且类型为str
      • 检查是否必选参数price属性,且类型为float
      • 检查是否有可选参数属性 is_offer,如果有的话,且类型为bool
      • 这些同样也对深层嵌套的JSON对象适用
      1. 将form类型自动转换为JSON
      1. OpenAPI将会把所有的API接口排列出来,能被以下场景使用
      • 交互的文档系统
      • 对很多语言,自动生成代码客户端系统
      1. 直接提供2个网页交互页面
    
    Convert from and to JSON automatically.
    Document everything with OpenAPI, that can be used by:
    Interactive documentation systems.
    Automatic client code generation systems, for many languages.
    Provide 2 interactive documentation web interfaces directly.
    

    相关文章

      网友评论

        本文标题:fastapi介绍(三):简单应用升级

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