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
- Laravel 是如何請求 Request 的Laravel
- 後臺接收Json請求引數相容陣列和單個物件JSON陣列物件
- 前端傳送的請求,是如何請求到後端服務的?前端後端
- Zttp 傳送 form params 請求 而非 JSON 請求ORMJSON
- nodejs expressNodeJSExpress
- 解決 Laravel 接收非簡單請求時,只有收到 OPTIONS 請求的問題Laravel
- RESTFUL風格的URL請求及引數接收REST
- 我是一個請求,我是如何被髮送的?
- 使用Spring Integration接收TCP與UDP請求SpringTCPUDP
- NodeJS 與 ExpressNodeJSExpress
- [譯]axios 是如何封裝 HTTP 請求的iOS封裝HTTP
- SAP Connection inbound郵件接收處理機制
- nodejs使用request傳送http請求NodeJSHTTP
- nodejs HTTPS發起POST請求NodeJSHTTP
- Tomcat中的容器是如何處理請求的Tomcat
- springmvc ajax請求以及jsonSpringMVCJSON
- Postman傳送請求引數是Map格式的請求Postman
- node.js的express模組實現GET和POST請求Node.jsExpress
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- Laravel 底層是如何處理HTTP請求LaravelHTTP
- ***PHP請求服務curl以及json的解析PHPJSON
- okhttp 原始碼解析 - 網路協議的實現 - 請求流程: 請求的傳送與響應的接收HTTP原始碼協議
- Spring對JSON請求加解密SpringJSON解密
- 設定讓ASP.NET管道接收所有型別的請求ASP.NET型別
- Express中關於formData物件接收的模組ExpressORM物件
- golang 版本的 curl 請求庫Golang
- SpringBoot Get 請求接收 Date 型別引數Spring Boot型別
- JavaWeb基礎-Request物件接收表單請求引數JavaWeb物件
- go-zero 是如何追蹤你的請求鏈路?Go
- nodejs 使用的一些http網路請求模組NodeJSHTTP
- go-zero 是如何追蹤你的請求鏈路的Go
- 如何在Spring Boot中驗證JSON請求內容? - SeunSpring BootJSON
- nodejs實現HTTPS發起POST請求NodeJSHTTP
- jmeter之傳送json資料的post請求JMeterJSON
- vue3.0 請求本地json 檔案VueJSON
- C#模擬HTTP請求Post JSONC#HTTPJSON
- axios請求JSON問題詳解iOSJSON