• 三.【NodeJs入门学习】POST接口


    上一节我们学习了get接口,这一节我们自己来写一下post接口

    1.复习一下

    先复习一下上一节中get请求的步骤

    上图是在入口app.js中处理get请求,先拿到请求的url,然后设置了一个函数handleRoutes去处理请求和相应的数据,函数中我们根据请求的方法和连接去分别处理:就是拿到请求的数据,并做一些列处理,然后返回处理后的数据,因为响应的数据格式需要string类型化,所以我们转了一下返回的json数据,然后响应结束并返回。

    2.POST请求

    我们照猫画虎,去写一个post请求,在这之前,我们百度了一下post请求的基本代码:

    需要用res.on方法,给一个data属性将数据用流的形式存储,如下:

    1. let strData = '';
    2. req.on('data', (chunk) => {
    3. strData += chunk.toString();
    4. })

    然后是使用req.on('end', () => {}),去结束请求,特别注意,需要在回调函数中res.end及其他处理,负责会出现异步的情况,下面我们具体来看一下。

    1)首先我们需要在创建服务的回调函数中,也就是app.js中区别一下get和post请求

    根据req.method即可判断:

    2)接收请求并处理数据

     依照1)之前我们查到的代码来写我们自己的代码:

    strData是我们接收到的入参,咋混为json格式之后,传入处理数据的函数中,后面接收数据就和get请求是一样的。

    3)处理数据

    我们具体看一下数据处理,顺便修改了一下之前的get请求,我们先看一下路由的处理:

    我改了一下请求,get请求去拿这个学校的年级,post请求去拿某个年级的班级,然后是数据处理的文件,后面会使用数据库查询,暂时先写死吧:

     4)post的数据

    我们着重来看一下中间路由的数据处理,就是下面这段代码

    1. if (method === 'POST' && req.url === '/api/grade/queryClass') {
    2. const body = req.body;
    3. const data = queryClasses(body);
    4. console.log(data,new SuccessModal(data) )
    5. return new SuccessModal(data);
    6. }

    我们在传入路有前将拿到的入参放在了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去返回,处理一步也就这几种方式;

    其他也没啥了下一章节继续跟着视频去学习了。

     

     

  • 相关阅读:
    【Linux】常见指令(二)
    数列求和-加强版
    分享一下微信扫码抽奖活动怎么做
    css取消移动端长按元素背景色
    spring boot +Scheduled 动态定时任务配置
    由于 Python 环境不一致导致的No module named ‘selenium‘
    OceanBase 首席科学家阳振坤博士入选2022 年度“CCF王选奖”
    【UE5 刺客信条动态地面复刻】实现无界地面01:动态生成
    JAVASE总结作业----接口和抽象
    一百九十二、Flume——Flume数据流监控工具Ganglia单机版安装
  • 原文地址:https://blog.csdn.net/q553866469/article/details/126294306