本节将介绍常见的http请求方式,并站在后端的角度初步感受它们的不同点
其中 GET, POST 最为广泛使用,同时可以使用PUT和DELETE让我们的接口的目的更具有指向性
本书绝大部分接口都将采用类REST风格,即普遍的返回码200,数据格式为json
通过调用get,post,pu,delete…对应不同方法下的路由
由于实际受不同的开发规范和业务环境影响,在这里只以GET和POST举例
//省略了express项目的创建
class Item {
constructor(name, value) {
this.name = name;
this.value = value;
}
}
//get接口
app.get('/request', function (req, res) {
let result = [];
result.push(new Item("baseUrl",req.baseUrl));
result.push(new Item("fresh",req.fresh)); //请求是否存活
result.push(new Item("hostname",req.hostname)); //请求源域名
result.push(new Item("ip",req.ip)); //请求源IP
result.push(new Item("originalUrl",req.originalUrl));
result.push(new Item("params",req.path)); //路径参数: /x/y/z/
result.push(new Item("protocol",req.protocol)); //请求协议
result.push(new Item("query",req.query)); //查询参数
result.push(new Item("route",req.route)); //请求路由
result.push(new Item("is:Content-Type",req.is('application/json')));
res.send(result);
});
以上代码,定义了GET接口,并返回了关于请求的大部分信息
使用api调试工具,尝试用不同的携带数据方法以get形式访问该接口,比较不同的返回结果
监听相同路径的post请求,开启json解析,一会我们调试时请求体采用最常用的json格式
//启用json解析
app.use(express.json({type: 'application/json'}));
app.post('/post', function (req, res) {
let result = [];
result.push(new Item("baseUrl",req.baseUrl));
result.push(new Item("fresh",req.fresh));
result.push(new Item("hostname",req.hostname));
result.push(new Item("ip",req.ip));
result.push(new Item("originalUrl",req.originalUrl));
result.push(new Item("params",req.path));
result.push(new Item("protocol",req.protocol));
result.push(new Item("query",req.query));
result.push(new Item("body",req.body));
result.push(new Item("route",req.route));
result.push(new Item("is:Content-Type",req.is('application/json')));
res.send(result);
});
使用api调试工具,尝试用不同的携带数据方法以post形式访问该接口,比较不同的返回结果
如果你想让某个路由能以任意方法访问:
app.use('/any', function (req, res) {
res.send('Bad World!');
});
尝试使用各种方法去访问 127.0.0.1:8080/any,都可以得到Bad World!