FastAPI

9 阅读2分钟

FastAPI是一个用python写后端接口的Web框架。用来快速写API(接口)的工具,性能高(底层用的是Starlette,Uvicorn),写起来简单,有类型提示(自动校验参数等),自动生成接口文档。

Uvicorn是一个“服务器”,有了Uvicorn,浏览器/前端可以访问你写的接口(让服务跑起来)。

可以用FastAPI做:

·写后端接口(给前端用)

·做AI服务接口

·做数据处理服务

·做网站后端(轻量)

eg你做一个AI项目:

·前端:输入一句话

·后端:调用模型->返回结果

FastAPI就是“中间那个接口层

写代码少(比Flask和Django简洁)

eg:from fastapi import FastAPI

app=FastAPI()

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

直接就能跑一个接口。

FastAPI核心原理:

基于ASGI(异步服务器协议)

传统(Flask):

·一次只能处理一个请求(阻塞)

FastAPI:

·可以同时处理很多个请求(非阻塞)

适合: ·AI接口 ·高并发服务

·自动数据校验(靠Pydantic)

from pydantic import BaseModel

class User(BaseModel):

name: **str**
age: **int**

·路由系统

@app.get("/users")

@app.post("/users")

安装:

pip install fastapi uvicorn

运行:

uvicorn main:app --reload

·请求参数解析

FastAPI能自动识别参数来自哪里

·自动生成文档系统

启动后访问:/docs

自动生成接口文档

·异步支持(性能关键)

@app.get("/") async def read_root(): return {"msg": "ok"}

支持 async/await

好处:高并发;适合AI/IO密集

FastAPI核心示例

@app.get("/items/{item_id}") def read_item(item_id: int): return {"item_id": item_id}

当用户访问http://127.0.0.1:8000/items/5

发生的是:

浏览器发送http请求

Uvicorn接收请求

FastAPI的路由系统匹配路径/items/{item_id}

提取参数item_id=5(5是从URL中解析出来的)

调用read_item(5)

返回结果{"item_id": 5}

返回给浏览器显示

URL:Uniform Resource Locator(统一资源定位符) = 一个“地址

eg:http://127.0.0.1:8000/items/5

http 协议(通信方式)

127.0.0.1 本机地址(localhost)(服务器地址)

8000 端口

/items/5 路径

为什么返回的是json?

Web标准;FastAPI自动帮你转;json最适合前后端交互(简单+通用)

Pydantic=数据校验工具(工具库)(帮你检查用户传的数据是不是合法)

BaseModel=Pydantic提供的“基类”

GETPOST(这是HTTP请求方式)

GET(获取数据),用来“查”

POST(提交数据),用来“创建数据”

路由系统=把URL映射到函数

综述: 在FastAPI中,URL是用户访问的地址,路由系统负责将不同的URL映射到对应的处理函数。当用户通过GET或POST请求某个路径时,系统会解析路径参数并调用对应函数执行逻辑,最终将Python数据自动转换为JSON格式返回给客户端。同时,通过Pydantic的BaseModel可以对请求数据进行自动校验,提高接口的安全性和可靠性。