请求报文:行,头,体
我们一般使用ajax技术请求接口,按http协议的约定,每个请求都有三个部分:
-
请求行: 保存了请求方式,地址,可以以查询字符串的格式附加小部分数据。
-
请求头:它可以附加很多信息,其中content-type用来约定请求体中保存的数据格式。
content-type常见有三种取值:
content-type的值 | 表示请求体的数据格式 | 示例 |
---|---|---|
application/x-www-form-urlencode | 普通键值对象 | a=2&c=1 |
application/json | json对象 | {a:1,b:{c:1}} |
multipart/form-data | 上传文件 | file |
- 请求体: 本次请求携带的参数。至于这些参数到了后端应该如何解析出来,由请求头中的content-type来决定。
传参途径
方法一:请求行。常见方式如下:
-
使用ajax技术,通过get方式传参。
-
在浏览器地址栏中输入接口地址并补充上查询字符串。
方法二:请求体。
-
ajax中的post, put, delete可以从请求体中进行传参。
另外,请求头中的content-type用来告之服务器应该以何种方式去解析请求体中的数据。
后端处理
接口的规则是由后端来定的,它会约定接口:名字,参数,格式,方式。
例如:
名字: /api
参数:name: 用户名,pwd:密码,avatar头像文件。
格式:formdata.
方式:post
名字: /api2
参数:name: 用户名,pwd:密码
格式:application/x-www-form-encoded (普通键值对)
方式:post
名字: /api3
参数:name: 用户名,pwd:密码
格式:application/json
方式:post
总结
传参方式 | 前端 content-type | 后端框架express |
---|---|---|
请求行 | get方式 | req.query |
请求体 | application/x-www-form-urlencode | app.use(express.urlencoded()); req.body |
请求体 | application/json | app.use(express.json()); req.body |
请求体 | multipart/form-data | 1. 引入包 const multer = require('multer'); 2. 配置app.post('/apiname', upload.single(), req.body) |