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提供的“基类”
GET和POST(这是HTTP请求方式)
GET(获取数据),用来“查”
POST(提交数据),用来“创建数据”
路由系统=把URL映射到函数
综述: 在FastAPI中,URL是用户访问的地址,路由系统负责将不同的URL映射到对应的处理函数。当用户通过GET或POST请求某个路径时,系统会解析路径参数并调用对应函数执行逻辑,最终将Python数据自动转换为JSON格式返回给客户端。同时,通过Pydantic的BaseModel可以对请求数据进行自动校验,提高接口的安全性和可靠性。