API(Application Programming Interface) 本质是一种“调用规则”(客户端与服务器之间的通信契约(约定)),告诉别人怎么访问你的功能(开发者设计的访问规范),调用方(前端/其他系统)通过API文档知道如何访问。
一个完整的API包含:
1.URL(访问地址)
2.请求方法(GET/POST/PUT/DELETE)
3.请求参数(path/query/body)
4.返回格式(一般是json)
5.状态码(200/404/500)
eg:
GET /users/1 HTTP/1.1
请求: 无
返回: { "id": 1, "name": "xuan" }
这就是API文档(给人看的说明书)
FastAPI与API的关系
FastAPI是用来“实现API”的工具
(FastAPI是一个Web框架,用于定义API并处理请求(包括路由、参数解析、 返回响应等) (业务逻辑是并不是由FastAPI来完成,而是开发者)
API (设计规则)->FastAPI用代码实现->路由系统映射url到具体功能->服务器运行(提供服务)
eg:
@app.post("/users")
def create_user(user: User):
return {"message": "创建成功"}
HTTP请求是什么?
浏览器发给服务器的一整条请求数据
http请求=
1.方法(GET/POST)
2.URL(路径+query参数)
3.http版本
3.请求头(一般不用管)
4.请求体(body,可选)
eg:
GET /users/1 HTTP/1.1
Host: 127.0.0.1:8000
GET和POST的区别
GET(通常用于获取数据)
eg: GET /users?id=1
通常通过query传参,不推荐使用body(规范允许但基本不用)
?id=1
POST(通常用于提交数据)
POST /users
{
"name": "xuan",
"age": 20
}
通常通过body传参
服务器是怎么工作的?
1.读取客户端发来的方法+URL
2.交给FastAPI
3.匹配路由(方法+路径)
4.执行函数
5.返回JSON
用户只输入 URL,但浏览器会自动构造完整 HTTP 请求(包含方法、路径、版本等),服务器根据请求中的方法和路径匹配对应 API 并执行逻辑(路由映射,本质是一个映射表mapping)