express bodyparser_nodejs库express是如何接收inbound json请求的
這樣幾行簡單的代碼創(chuàng)建一個web服務(wù)器:
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){
// 此處編寫業(yè)務(wù)邏輯
});
就可以接收json請求了。問題就是,我通過postman發(fā)送的json字符串,是如何被nodejs的express庫處理的呢?
調(diào)試一下,trim_prefix的參數(shù)path即我在postman里測試的API endpoint:
調(diào)用layer的handle_request方法,這個很像SAP ABAP里的IF_HTTP_EXTENSION的HANDLE_REQUEST方法。
express中的中間件,query.js:
這個中間件里也用了直接和undefined做比較的方式:
這里準備開始讀取inbound json了:
通過stream上注冊的回調(diào)函數(shù)onData進行數(shù)據(jù)讀取:
讀取了65018個字節(jié)的數(shù)據(jù):
把讀取的數(shù)據(jù)寫到buffer里:
寫的同時還被第252行的decoder進行了解碼:
當inbound message的數(shù)據(jù)全部讀取完畢后,觸發(fā)End事件,執(zhí)行注冊的回調(diào)done函數(shù):
此時所有讀取的數(shù)據(jù)都存放在變量body里了:
這個json.js負責把body變量里包含的字符串解析成json對象:
由此可見,body-parser這個庫最終使用的仍然是原生的JSON.parse API來完成解析任務(wù)。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的express bodyparser_nodejs库express是如何接收inbound json请求的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在命令行中更新pip的方法
- 下一篇: sql数据库设置主键的方法