美文网首页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