上一节我们学习了get接口,这一节我们自己来写一下post接口
1.复习一下
先复习一下上一节中get请求的步骤
上图是在入口app.js中处理get请求,先拿到请求的url,然后设置了一个函数handleRoutes去处理请求和相应的数据,函数中我们根据请求的方法和连接去分别处理:就是拿到请求的数据,并做一些列处理,然后返回处理后的数据,因为响应的数据格式需要string类型化,所以我们转了一下返回的json数据,然后响应结束并返回。
2.POST请求
我们照猫画虎,去写一个post请求,在这之前,我们百度了一下post请求的基本代码:
需要用res.on方法,给一个data属性将数据用流的形式存储,如下:
let strData = '';
req.on('data', (chunk) => {
strData += chunk.toString();
})
然后是使用req.on('end', () => {}),去结束请求,特别注意,需要在回调函数中res.end及其他处理,负责会出现异步的情况,下面我们具体来看一下。
1)首先我们需要在创建服务的回调函数中,也就是app.js中区别一下get和post请求
根据req.method即可判断:
2)接收请求并处理数据
依照1)之前我们查到的代码来写我们自己的代码:
strData是我们接收到的入参,咋混为json格式之后,传入处理数据的函数中,后面接收数据就和get请求是一样的。
3)处理数据
我们具体看一下数据处理,顺便修改了一下之前的get请求,我们先看一下路由的处理:
我改了一下请求,get请求去拿这个学校的年级,post请求去拿某个年级的班级,然后是数据处理的文件,后面会使用数据库查询,暂时先写死吧:
4)post的数据
我们着重来看一下中间路由的数据处理,就是下面这段代码
if (method === 'POST' && req.url === '/api/grade/queryClass') {
const body = req.body;
const data = queryClasses(body);
console.log(data,new SuccessModal(data) )
return new SuccessModal(data);
}
我们在传入路有前将拿到的入参放在了req的body中:
req.body = JSON.parse(strData);
然后在路由中拿到body入参,进行数据查询,拿到我们需要的res数据,new SuccessModal是创建的一个成功返回数据的模版,上一节有介绍到,会返回一个status为200,且数据会存在data中返回。
5)postman测试
我们清晰的看到了请求接口返回的grade为1时的信息,至此post请求我们就写完了。
3.总结
其实也没啥总结的,有需要我们注意的几点。
1)post请求时,入参接收是chunk参数,以数据流的形式返回,且我们需要转为string接收;
2)end的时候会产生异步,我们要不在回调函数中完成,要不就要使用promise去返回,处理一步也就这几种方式;
其他也没啥了下一章节继续跟着视频去学习了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)