FastAPI:(2)开启FastAPI

FastAPI:(2)开启FastAPI

由于CSDN无法展示「渐构」的「#d,#e,#t,#c,#v,#a」标签,推荐访问我个人网站进行阅读:Hkini

「渐构展示」如下:

#e FastAPI例子

python 复制代码
from fastapi import FastAPI # 导入FastAPI

app = FastAPI() # 创建一个FastAPI「实例」

@app.get("/") # 创建一个路径操作,「路径」也通常被称为「端点」或「路由」。
async def root(): # 定义路径操作函数。每当FastAPI接收一个使用GET方法访问 URL「/」的请求时这个函数会被调用。
    return {"message": "Hello World"}

运行服务:

bash 复制代码
fastapi dev main.py

   FastAPI   Starting development server 🚀

             Searching for package file structure from directories
             with __init__.py files
             Importing from /home/user/code/awesomeapp

    module   🐍 main.py

      code   Importing the FastAPI app object from the module with
             the following code:

             from main import app

       app   Using import string: main:app

    server   Server started at http://127.0.0.1:8000
    server   Documentation at http://127.0.0.1:8000/docs

       tip   Running in development mode, for production use:
             fastapi run

             Logs:

      INFO   Will watch for changes in these directories:
             ['/home/user/code/awesomeapp']
      INFO   Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C
             to quit)
      INFO   Started reloader process [383138] using WatchFiles
      INFO   Started server process [383153]
      INFO   Waiting for application startup.
      INFO   Application startup complete.

#d OpenAPI

OpenAPI 是一种用于定义 RESTful API 的规范 (以前称为 Swagger 规范),它使用标准的、与语言无关的格式(通常是 JSON 或 YAML)来描述 API 的路径、参数、响应、请求体等内容 。在 FastAPI 中,OpenAPI 被自动集成,用于自动生成 API 文档(如 Swagger UI、ReDoc),并使得客户端代码生成、接口验证等功能成为可能。FastAPI 使用定义 API 的 OpenAPI 标准将所有 API 转换成「模式」。

重要特征

  • 自动化描述能力

    OpenAPI 能够自动地将代码中的接口定义转换成结构化文档,无需手动维护文档。

  • 可视化文档生成

    FastAPI 使用 OpenAPI 自动生成 Swagger UI,使得 API 结构、参数、响应一目了然。

  • 语言无关性与互操作性强

    OpenAPI 使用标准格式(JSON/YAML),可以被多种语言和工具链识别和使用(如 Postman、代码生成器等)。

  • 支持验证与交互

    OpenAPI 文档可以支持输入参数和输出结果的格式验证,并通过 Swagger UI 进行接口测试。

#e 医疗系统API(正例) OpenAPI

现象

一个医疗管理系统使用 FastAPI 构建,所有接口(如病人信息查询、预约管理、处方提交)都通过 pydantic 明确定义了请求体和响应模型,并使用 FastAPI 自动生成的 Swagger UI 提供交互式文档,供前端和测试团队使用。

特征对比

特征 表现情况
自动化描述能力 FastAPI 自动生成 OpenAPI 文档
可视化文档生成 提供 Swagger UI 和 ReDoc
语言无关与互操作性 OpenAPI 文档可导入 Postman 使用
验证与交互支持 Swagger UI 可直接测试参数与结果格式

#e Flask接口文档(反例) OpenAPI

现象

某传统项目使用 Flask 编写 RESTful API,但所有接口文档靠 Markdown 手写维护。接口参数、响应字段、状态码等均靠开发者手动同步,无法通过代码生成或工具交互测试。

特征对比

特征 表现情况
自动化描述能力 ❌ 无自动文档,文档与代码容易不一致
可视化文档生成 ❌ 只能阅读手动文档,无法交互
语言无关与互操作性 ❌ 文档格式无法用于自动生成客户端代码
验证与交互支持 ❌ 无法通过 UI 验证接口功能

#d 模式

在 FastAPI 及 OpenAPI 中,「模式」是对数据或结构的抽象描述 ,而非实现代码。它定义了接口(API)的结构、请求与响应的数据格式、字段类型、是否必填、默认值等。OpenAPI 规范使用 JSON Schema 标准来描述这些 API 和数据的「模式」。换句话说,「模式」是对 API 接口行为与数据结构的统一描述标准,用于自动生成文档、验证输入、支持交互等功能。

重要特征:

  • 抽象性

    模式是对数据和接口的定义,并不涉及实际的逻辑实现。

  • 结构性

    模式中清晰地规定了路径、请求参数、响应内容、字段类型等结构。

  • 一致性与可验证性

    使用 JSON Schema 描述的模式可被用来验证输入数据是否满足要求。

  • 生成性

    模式可被用于自动生成文档、测试界面,甚至客户端 SDK。

  • 语义明确性

    模式使用标准格式(如 OpenAPI + JSON Schema),具备良好的互操作性和规范性。

#e 数据模式 模式

User 是一个数据模式。它通过 pydantic 转换为 OpenAPI JSON Schema,供前后端验证结构。

python 复制代码
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str

@app.post("/users/")
def create_user(user: User):
    return {"message": "user received", "data": user}

#e API模式 模式

路径、方法、参数、响应结构等都自动被 FastAPI 转换为 OpenAPI 模式,可在 /docs 中看到。

python 复制代码
@app.get("/predict", tags=["AI"])
def predict(age: int, weight: float):
    return {"risk": "high" if age > 50 else "low"}

#e 数据库模式 模式

使用 SQLModelSQLAlchemy,定义数据库模式:

python 复制代码
from sqlmodel import SQLModel, Field

class Product(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True)
    name: str
    price: float

#e UI模式 模式

同时 FastAPI 提供接口响应:

python 复制代码
@app.get("/form-schema")
def get_form_schema():
    return {
        "type": "object",
        "properties": {
            "username": {"type": "string", "title": "用户名"},
            "age": {"type": "number", "title": "年龄"}
        },
        "required": ["username"]
    }
相关推荐
蓝倾2 天前
小红书获取笔记详情API接口调用操作指南
前端·api·fastapi
六毛的毛2 天前
FastAPI入门:表单数据、表单模型、请求文件、请求表单与文件
前端·python·fastapi
码@农3 天前
Python三大Web框架:FastAPI vs Flask vs Django 详解与快速入门指南
python·fastapi
MC皮蛋侠客3 天前
AsyncIOScheduler 使用指南:高效异步任务调度解决方案
网络·python·fastapi
蓝倾4 天前
淘宝拍立淘(以图搜图)API接口调用流程指南
前端·api·fastapi
cts6187 天前
全文检索官网示例
python·全文检索·fastapi
半新半旧8 天前
FastAPI中间件
中间件·fastapi
爱吃羊的老虎9 天前
【后端】FastAPI的Pydantic 模型
数据库·后端·python·fastapi
Elastic 中国社区官方博客9 天前
使用 FastAPI 构建 Elasticsearch API
大数据·数据库·python·elasticsearch·搜索引擎·全文检索·fastapi
陈小桔10 天前
SQLALchemy
python·fastapi