nodejs庫express是如何接收inbound json請求的
這樣幾行簡單的程式碼建立一個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的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2658615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP 是怎麼接收到請求的?PHP
- 後臺接收Json請求引數相容陣列和單個物件JSON陣列物件
- Laravel 是如何請求 Request 的Laravel
- 前端傳送的請求,是如何請求到後端服務的?前端後端
- NodeJS 與 ExpressNodeJSExpress
- 解決 Laravel 接收非簡單請求時,只有收到 OPTIONS 請求的問題Laravel
- RESTFUL風格的URL請求及引數接收REST
- 使用Spring Integration接收TCP與UDP請求SpringTCPUDP
- SAP Connection inbound郵件接收處理機制
- nodejs使用request傳送http請求NodeJSHTTP
- Spring對JSON請求加解密SpringJSON解密
- [譯]axios 是如何封裝 HTTP 請求的iOS封裝HTTP
- Tomcat中的容器是如何處理請求的Tomcat
- SpringBoot Get 請求接收 Date 型別引數Spring Boot型別
- 我是一個請求,我是如何被髮送的?
- 如何在Spring Boot中驗證JSON請求內容? - SeunSpring BootJSON
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- Postman傳送請求引數是Map格式的請求Postman
- jmeter之傳送json資料的post請求JMeterJSON
- C#模擬HTTP請求Post JSONC#HTTPJSON
- vue3.0 請求本地json 檔案VueJSON
- node.js的express模組實現GET和POST請求Node.jsExpress
- yaml 檔案裡的中文,以 json 格式請求抓包為什麼是 unicodeYAMLJSONUnicode
- Laravel 底層是如何處理HTTP請求LaravelHTTP
- axios傳送post請求,request.getParamter接收不到iOS
- JavaWeb基礎-Request物件接收表單請求引數JavaWeb物件
- 【Postman】6 Postman 傳送post請求-Json格式PostmanJSON
- go-zero 是如何追蹤你的請求鏈路?Go
- go-zero 是如何追蹤你的請求鏈路的Go
- Express中關於formData物件接收的模組ExpressORM物件
- go搞笑http請求庫GoHTTP
- 如何避免舊請求的資料覆蓋掉最新請求
- .net接收post請求並把資料轉為字典格式
- NodeJS+Express遇到的跨域問題NodeJSExpress跨域
- python requests get請求 如何獲取所有請求Python
- PHP與Curl採用的GET,POST,JSON方式請求APIPHPJSONAPI
- nodejs中間層實踐(express)NodeJSExpress
- Java後端請求想接收多個物件入參的資料方法Java後端物件