这样几行简单的代码创建一个web服务器:

var express = require('express');
var app = express();
var server = require('http').Server(app);
var bodyParser = require('body-parser');app.use(bodyParser.json({limit: '10mb', extended: true}));

然后使用app.post("/getSimilarImage", function(req, res){
// 此处编写业务逻辑
});

就可以接收json请求了。问题就是,我通过postman发送的json字符串,是如何被nodejs的express库处理的呢?

调试一下,trim_prefix的参数path即我在postman里测试的API endpoint:

调用layer的handle_request方法,这个很像SAP ABAP里的IF_HTTP_EXTENSION的HANDLE_REQUEST方法。

express中的中间件,query.js:

这个中间件里也用了直接和undefined做比较的方式:

这里准备开始读取inbound json了:

通过stream上注册的回调函数onData进行数据读取:
读取了65018个字节的数据:

把读取的数据写到buffer里:

写的同时还被第252行的decoder进行了解码:

当inbound message的数据全部读取完毕后,触发End事件,执行注册的回调done函数:

此时所有读取的数据都存放在变量body里了:

这个json.js负责把body变量里包含的字符串解析成json对象:

由此可见,body-parser这个库最终使用的仍然是原生的JSON.parse API来完成解析任务。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

nodejs库express是如何接收inbound json请求的相关推荐

  1. express bodyparser_nodejs库express是如何接收inbound json请求的

    这样几行简单的代码创建一个web服务器: var express = require('express'); var app = express(); var server = require('ht ...

  2. 使用nodejs和express搭建http web服务

    文章目录 简介 使用nodejs搭建HTTP web服务 请求nodejs服务 第三方lib请求post 获取http请求的正文 Express和使用express搭建http web服务 expre ...

  3. Nodejs之Express框架

    Nodejs之Express框架 Express 简介 安装 Express 第一个 Express 框架实例 请求和响应 路由 静态文件 GET 方法 POST 方法 文件上传 Cookie 管理 ...

  4. NodeJS,EXpress框架的一知半解

    一,什么是nodejs node.js是一个基于chrome V8引擎的JavaScript运行环境 (node.js并不是一门新的语言) 二.node.js的特点 1.事件驱动 2.非阻塞I/O 3 ...

  5. C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法

    C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...

  6. 关于内网linux系统如果安装nodejs,npm,express,mongodb,forever等

    内网的linux系统要安装nodejs以及express等系列的框架,因为系统是局域网和互联网是物理隔离的,所以,没法像官网的安装教程那样直接install了,只能手动安装,这里已经我们自己的linu ...

  7. php要每次循环两个数据库,从前台接收的json数据 2个数组,php同时插入sql数据库,循环要怎么套呢?...

    从前台接收的json数据 2个数组,php同时插入sql数据库,循环要怎么套呢? mip版  关注:215  答案:2  悬赏:30 解决时间 2021-01-18 18:47 已解决 2021-01 ...

  8. java controller json_springMVC的controller层接收前端json数据

    1.前端的操作: 对象接收json数据方式:将所需要传的数据转化为json数据,并将这些数据以post方式传到后台的controller层,然后controller层接收json数据,并且是以对象的形 ...

  9. PHP发送和接收JSON请求

    现在微服务中,很多API由于需要传递的参数较多所以要求用包含所有参数的JSON数据作为POST请求的请求体来替代FormData传递参数的方式,在参数量较多时POST JSON要比POST FormD ...

最新文章

  1. 全国计算机等级考试评卷、成绩处理和证书管理办法
  2. 算法题:“找出单身狗”--找出一个数组中只出现一次的数字
  3. soj 4539 贪心+优先队列
  4. Unicode 转换 ASCII,ASCII 转换 Unicode 在线网站工具
  5. oracle的查询数据(检索数据)
  6. 如何自学python-如何自学python语言
  7. linux 路由表(转)
  8. 2020年中国林业有害生物发生及防治面积统计情况,林业有害生物防控措施工作的开展刻不容缓「图」
  9. 微信小程序实现秒杀、拼团、团购等效果
  10. java前后端分离(增删查改)
  11. ppt加音乐计算机一级,PPT2016背景音乐该怎么设置?
  12. Hello Qt——Qt自定义标题栏
  13. 你的微信号安全吗?(附最新技术分享)
  14. [渝粤教育] 浙江大学 2021秋冬微积分(一) 参考 资料
  15. 【CocosBuilder 开发系列之一】cocos2dx使用CocosBuilder(编辑器)完成基础骨骼动画
  16. PAT A1103 Integer Factorization整数分解 (经典DFS优化)
  17. 计算机机房雷电接地,关于计算机机房防雷、防静电及接地的若干问题
  18. 克劳特法matlab,经验模式分解matlab
  19. 盒子模型基本介绍及知识点
  20. 二级计算机重点,计算机二级的复习重点

热门文章

  1. 安卓开发中SpannableString之富文本显示效果
  2. mysql5.7.23手动配置安装windows版
  3. BZOJ 4326 NOIP2015 运输计划(树上差分+LCA+二分答案)
  4. 关于WPF中TextBox使用SelectAll无效的问题的解决办法
  5. 条件编译用法(#ifndef #define #endif#else)
  6. 编程之美 求数组中的最长递增子序列
  7. lucene索引word/pdf/html/txt文件及检索(搜索引擎)
  8. 关于listview上下滑动imageview图片混乱问题
  9. 签名build apk: Could not resolve all files for configuration ':app:lintClassPath' 问题
  10. 文献学习(part20)--Sparse Subspace Clustering: Algorithm, Theory, and Applications