807 字
4 分钟
api接口备忘
HTTP请求
请求组成
1. 起始行(Request Line)
这是请求的第一行,格式固定为:方法 + 路径 + 协议版本。
示例:POST /api/links?id=5 HTTP/1.1
?后面的是参数(Params)
2. 请求头(Header)
常见的请求头包括:
Host: 请求的目标域名。User-Agent: 客户端(如浏览器)的标识信息。Content-Type: (主要用于POST请求) 告诉服务器请求体的数据类型,如application/json。Authorization: 用于身份验证的凭证,如Token。Accept: 客户端能够接收的响应数据类型。X-API-KEY: 也是密钥的约定习惯名称 当然你也可以自己给请求头里加任何东西
3. 请求体(Body)
请求体支持很多种格式,不过大部分时候都是传json文本,需要上传文件的时候才用别的。
| 数据格式 | Content-Type(请求头中) | Flask 接收方式 | 特点 |
|---|---|---|---|
| form-data | multipart/form-data | request.form + request.files | 支持文件上传 |
| x-www-form-urlencoded | application/x-www-form-urlencoded | request.form | 简单键值对 |
| binary | application/octet-stream | request.data | 原始二进制 |
| raw (JSON) | application/json | request.get_json() | 结构化数据 |
| raw (Text) | text/plain | request.data | 纯文本 |
| MessagePack | application/x-msgpack | request.data + msgpack 解析 | 高效二进制 |
请求类型
HTTP协议理论上总共有7种请求方式:GET、POST、PUT、PATCH、DELETE、OPTIONS、HEAD。 比较常见的
| 动词 | 请求头 (Headers) | 路径参数 | 请求体 (Body) | 实战评价 |
|---|---|---|---|---|
| GET | ✅ 必须有 | ✅ 常用 | ❌ 不建议有 | 就像明信片,内容全写在封面上。 |
| POST | ✅ 必须有 | ✅ 可带(但少见) | ✅ 核心 | 就像快递箱,东西全塞在箱子里。 |
| PUT | ✅ 必须有 | ✅ 常用(定位ID) | ✅ 核心 | 就像换货单,指明换哪个,并给出新货。 |
| DELETE | ✅ 必须有 | ✅ 核心(定位ID) | ❌ 不建议有 | 就像撤销指令,告诉服务器“把那条删了”。 |
api风格
RESTful
学院派http的api风格,GET用来查,POST用来增,DELETE用来删,PUT、PATCH用来改。 如你所见过度设计的典型,想要按照标准写api真是要吃一大坨。
自由派
随心所欲,不要花里胡哨的,一大堆的条条框框。就工程上怎么方便怎么来,原本传个参要分成好几块分别取,麻烦爆了。 工程上就用两个类型GET、POST就行了,GET专门查,别的全用POST最万能兼容性还是最好的。 接口类型直接用路径区分而不是用不同的请求类型区分。
- 127.0.0.1:5000/get (GET)
- 127.0.0.1:5000/add (POST)
- 127.0.0.1:5000/delete (POST)
- 127.0.0.1:5000/update (POST)
GraphQL
更极端化的,就全部只用POST请求,而且不用路径区分,全部使用同一个路径127.0.0.1:5000,连api本身也被写在了body的json里。
本质其实就是一个POST请求,你会发送过去一个json,里面包含了你需要的所有的东西,然后根据你给的json的需求,api会对应返回你要的json文件,使用这种api你就不需要关注api的路由,所有的请求全部一股脑的发到api的根目录。
你可以去api路径/graphql/大部分api都会有个这种交互式的api测试器,超级好用,就像在ide里用一样,他会自动联想这个类里面还有什么类,可以一直联想到最后变成常量!的时候。
非常灵活,根据你的需求灵活的写查询语句,要什么写什么