第一步

官方文档地址:https://fastapi.tiangolo.com/zh/tutorial/first-steps/

最简单的 FastAPI 文件可能像下面这样:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

将其复制到 main.py 文件中,运行实时服务器

uvicorn main:app --reload

# 也可以这样写:uvicorn main.py:app --reload

uvicorn main:app 命令含义如下:

  • main:main.py 文件(一个 Python「模块」)。
  • app:在 main.py 文件中通过 app = FastAPI() 创建的对象。
  • --reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。

在输出中,会有一行信息像下面这样,该行显示了你的应用在本机所提供服务的 URL 地址。

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

另一种启动方式

# -*- coding: UTF-8 -*-
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def main():
    return {"message": "Hello,FastAPI"}
    

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

查看

打开浏览器访问 http://127.0.0.1:8000,将看到如下的 JSON 响应:{"message": "Hello World"}

交互式 API 文档

跳转到 http://127.0.0.1:8000/docs,将会看到自动生成的交互式 API 文档(由 Swagger UI 提供)

可选的 API 文档

前往 http://127.0.0.1:8000/redoc,将会看到可选的自动生成文档 (由 ReDoc 提供)

OpenAPI

FastAPI 使用定义 API 的 OpenAPI 标准将你的所有 API 转换成「模式」。

「模式」
「模式」是对事物的一种定义或描述。它并非具体的实现代码,而只是抽象的描述。

API「模式」
在这种场景下,OpenAPI 是一种规定如何定义 API 模式的规范,定义的 OpenAPI 模式将包括你的 API 路径,以及它们可能使用的参数等等。

数据「模式」
模式」这个术语也可能指的是某些数据比如 JSON 的结构,在这种情况下,它可以表示 JSON 的属性及其具有的数据类型,等等。

OpenAPI 和 JSON Schema
OpenAPI 为你的 API 定义 API 模式。该模式中包含了你的 API 发送和接收的数据的定义(或称为「模式」),这些定义通过 JSON 数据模式标准 JSON Schema 所生成。

查看 openapi.json
可以直接在:http://127.0.0.1:8000/openapi.json 看到它。它将显示以如下内容开头的 JSON:

{
    "openapi": "3.0.2",
    "info": {
        "title": "FastAPI",
        "version": "0.1.0"
    },
    "paths": {
        "/items/": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
···

OpenAPI 的用途
驱动 FastAPI 内置的 2 个交互式文档系统的正是 OpenAPI 模式。

并且还有数十种替代方案,它们全部都基于 OpenAPI。你可以轻松地将这些替代方案中的任何一种添加到使用 FastAPI 构建的应用程序中。

你还可以使用它自动生成与你的 API 进行通信的客户端代码。例如 web 前端,移动端或物联网嵌入程序。

路径

操作

posted @ 2022-02-17 14:37  哈喽哈喽111111  阅读(185)  评论(0编辑  收藏  举报