这样几行简单的代码创建一个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的原创文章,请关注公众号"汪子熙":

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

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

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

  2. Express 工具库中的 Application 对象

    var express = require('express') var app = express()app.get('/', function (req, res) {res.send('hell ...

  3. Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)

    场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...

  4. 对比原生Node封装的Express路由 和 express框架路由

    文章目录 前言 一.routes.js 1.引入模块 2.changesRes() - send() 3.getFileMime() - type() 4.initStatic 5.server() ...

  5. Node.js—Express、Express 路由 、Express 中间件、使用 Express 写接口

    目标: 能够使用 express.static() 快速托管静态资源 能够使用 express 路由精简项目结构 能够使用常见的 express 中间件 能够使用 express 创建API接口 能够 ...

  6. Node 学习 | Day03 express (初识Express、Express 路由、Express 中间件、使用 Express 写接口)

    Express 初识Express 1.1 Express 简介 1.1.1 什么是 express 1.1.2 进一步理解 Express 1.1.3 Express可以做什么 1.2 Expres ...

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

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

  8. 去除html标签 express,详解Express条记之静态衬着HTML(新脚进坑)

    在日常项目中,我喜欢用Django做后端, 因为大而全 如果只是写一个简单服务的话, Express是更好的选择, Express是基于nodejs的一个后端框架,特点是简单,轻量, 容易搭建, 而且 ...

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

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

最新文章

  1. DWZ基于ajax重复请求的修复
  2. Wiki1017(乘积最大)
  3. UIAutomator输入中文
  4. 改变元素属性方法_IMR:全球品牌如何结合本土文化元素以提高品牌评价 | 唧唧堂论文解析...
  5. java mongocollection_MongoDb完结笔记-与java结合
  6. python打包exe有什么用_Python 打包exe
  7. aov建立Java模拟,JAVA
  8. python 类装饰器和继承_python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)...
  9. DevOps技术学习路线图 初阶+中阶+高阶
  10. HDOJ1548(BFS)
  11. Adobe Photoshop CC2014 安装过程
  12. 360浏览器怎么设置主页
  13. 计算机网络分层结构概述
  14. IPFS - 可快速索引的版本化的点对点文件系统
  15. android 蓝牙自动断开,Android蓝牙:连接()/断开()
  16. DNS中有哪些值得学习的优秀设计
  17. pytorch学习(二)梯度:什么叫梯度?什么叫梯度下降
  18. 关系型数据库的瓶颈 与 优化
  19. 【读书笔记】《杜月笙全传》读书笔记
  20. 百度携手华为麒麟深度合作,李彦宏现场被泼水称AI发展总有曲折 | 百度开发者大会

热门文章

  1. python3下载文件
  2. 本地安装 SAP Commerce 实例
  3. SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改
  4. 解决 Angular 官网下载的库 Schematics 在 windows 环境不支持 .. 的临时解决方案
  5. 在 SAP CRM Fiori 应用上给 Opportunity 订单添加 note 的后台执行明细
  6. TypeScript 里 tsconfig.json 文件的作用
  7. SAP Spartacus应用启用时导入的一些模块
  8. hybris backoffice创建product遇到的synchronization问题和解答
  9. SAP UI5 extension component loads standard component
  10. oModel.create will also send to backend directly