天天看点

FastAPI(2)- 快速入门

进到 py 文件所属目录的命令行

main:main.py 文件(一个 Python「模块」)

app:在 main.py 文件中通过 app = FastAPI() 创建的对象

--reload:让服务器在更新代码后自动重新启动,仅在开发时使用该选项

FastAPI(2)- 快速入门

我这里截图的名字换了哈

FastAPI(2)- 快速入门
FastAPI(2)- 快速入门
FastAPI(2)- 快速入门

FastAPi 使用 API 的 OpenAPI 标准为所有 API 生成 schema

是对事物的一种定义或描述

它并非具体的实现代码,而只是抽象的描述

后面会详说

OpenAPI 是一种规定如何定义 API Schema 的规范

定义的 OpenAPI Schema 将包括 API 路径,以及它们可能使用的参数等等

比如:这个 API 的作用是什么,需要必传哪些参数,请求方法是什么

指的是某些数据比如 JSON 的结构

它可以表示 JSON 的属性及其具有的数据类型

比如:某个属性的数据类型是什么,有没有默认值,是不是必填,作用是什么

OpenAPI 会为 API 定义 API Schema,一般会包括 API 发送和接收的数据的定义,比如:发送的数据的类型、是否必填

这些定义会以 JSON数据格式展示出来,所以都会称为 JSON Schema

原始的 OpenAPI Schema,其实它只是一个自动生成的包含了所有 API 描述的 JSON 数据结构

FastAPI(2)- 快速入门

将上面最简单的栗子代码进行拆开详解

FastAPI 是一个为 API 提供了所有功能的 Python 类,必写就对了

FastAPI 是直接从 Starlette继承的类,可以通过 FastAPI 使用所有的 Starlette 的功能

app 就是 FastAPI 类的一个实例对象啦

重点:app 将是创建所有 API 的主要交互对象

要点:uvicorn 执行命令时也会用到 app

指的是 URL 中从第一个 <code>/</code> 起的后半部分,即常说的 path

比如:https://example.com/items/foo 的路径就是/items/foo

路径也称为:端点、路由

就是 HTTP 请求方法

POST

GET

PUT

DELETE

OPTIONS

HEAD

PATCH

TRACE

在 HTTP 协议中,可以使用以上的其中一种(或多种)「方法」与每个路径进行通信

通常使用: 

POST:创建数据

GET:读取数据

PUT:更新数据

DELETE:删除数据

有两点含义

请求路径为 /

使用 get 请求

其他请求方法的装饰器

@app.post()

@app.put()

@app.delete()

@app.options()

@app.head()

@app.patch()

@app.trace()

这就是一个普通的 Python 函数

每当 FastAPI 接收一个使用 <code>GET</code> 方法访问路径为  / 的请求时这个函数会被调用

在这个例子中,它是一个 async 函数(异步处理函数,后面会细说)

可以返回一个 dict、list,也可以是 str、int 单个值

还可以返回 Pydantic 模型(后面详解)

还可以是其他会自动转换为 JSON 的对象和模型(包括 ORM 对象等)

编写一个最简单的 FastAPI 应用程序五部曲

导入 FastAPI

创建一个 app 实例

编写一个路径操作装饰器,如 @app.get("/") 

编写一个路径操作函数,如  def root(): ... 

运行开发服务器,如  uvicorn main:app --reload