node.js+postman實現(xiàn)模擬HTTP服務(wù)器與客戶端交互
當應(yīng)用程序(客戶端)需要某一個資源時,可以向一臺服務(wù)器通過http請求獲取到這個資源。提供資源的服務(wù)器就是web服務(wù)器(本文用node.js創(chuàng)建),用postman模擬客戶端向服務(wù)器發(fā)送請求。

一、node搭建HTTP服務(wù)器
node中使用 http 模塊來創(chuàng)建 HTTP 服務(wù)器, 每當接收到新的請求時,request 事件會被調(diào)用,并提供兩個對象:一個請求req(http.IncomingMessage 對象)和一個響應(yīng)res(http.ServerResponse 對象)。
request 提供了請求的詳細信息。 通過它可以訪問請求頭和請求的數(shù)據(jù)。(客戶端–>服務(wù)器)
response 用于構(gòu)造要返回給客戶端的數(shù)據(jù)(服務(wù)器–>客戶端)。下面是一個簡單的HTTP web服務(wù)器示例。
下面就是一個簡單的HTTP服務(wù)器的例子
//導(dǎo)入http模塊
const http = require('http')
// 創(chuàng)建http服務(wù)器
const server = http.createServer((req, res) => {
//設(shè)置 statusCode 屬性為 200,以表明響應(yīng)成功
res.statusCode = 200
// res本質(zhì)上繼承了stream.Writable的類
// 向客戶端發(fā)送完響應(yīng)頭和正文后告訴服務(wù)器本次消息傳輸結(jié)束
res.end("hollow server")
// 相當于res.writer("hollow server")+res.end()
})
// 監(jiān)聽服務(wù)器,當服務(wù)器就緒時,listen 回調(diào)函數(shù)會被調(diào)用
//控制臺打印啟動成功
server.listen('8089', 'localhost', () => {
console.log("啟動成功")
})
這時候你的本地服務(wù)器就搭建完畢了,可以去瀏覽器打開localhost:8089查看

二、HTTP服務(wù)器處理get請求
Postman 是一種常用的接口測試工具,可以發(fā)送幾乎所有類型的HTTP請求。Postman適用于不同的操作系統(tǒng),Postman Mac、Windows X32、Windows X64、Linux系統(tǒng),還支持postman 瀏覽器擴展程序、postman chrome應(yīng)用程序等。
下載也十分簡單,可以點擊這里直接去官網(wǎng)下載👉👉👉 Download Postman
1、postman發(fā)送get請求
在postman中新建一個request請求,在Enter request url 中填寫上面我們用node.js創(chuàng)建的HTTP服務(wù)器的主機地址以及用戶名和密碼http://localhost:8089/login?username=ahua&password=123,請求類型選擇GET,點擊send,postman就會向服務(wù)器發(fā)送一個get請求

2、服務(wù)器解析
服務(wù)器這邊接收到客戶端(postman)的get請求,對發(fā)送過來的數(shù)據(jù)進行處理
const http = require('http')
// 處理url的模塊
const url = require('url')
// 處理query的模塊
const qs = require('querystring')
const server = new http.Server((req, res) => {
// request對象中封裝了客戶端給我們服務(wù)器傳遞過來的所有信息
// 對url進行解析
const { pathname, query } = url.parse(req.url)
if (pathname === '/login') {
//console.log(query)
// qs的parse方法可以對query進行處理
// 將字符串類型轉(zhuǎn)換為js對象 username=ahua&password=123 --> {username: 'ahua',password: 123}
//console.log(qs.parse(query))
const { username, password } = qs.parse(query)
console.log(username, password)
res.end('請求結(jié)果')
}
console.log(req.url)
//打印請求類型
console.log(req.method)
//請求頭
console.log(req.headers)
})
server.listen('8089', 'localhost', () => {
console.log("serve啟動成功")
})
服務(wù)器這邊的解析結(jié)果

三、HTTP服務(wù)器處理post請求
1、postman發(fā)送post請求
上面get請求中將用戶名和密碼放在地址欄可能不夠安全,處理賬號密碼想穩(wěn)妥一點,現(xiàn)在將他們放在body里用json文件傳給服務(wù)器。
下圖所示便是postman將username和password放在json文件中通過bady傳遞給服務(wù)器的操作

2、服務(wù)器解析
服務(wù)器這邊接收到客戶端(postman)的post請求,對發(fā)送過來的數(shù)據(jù)進行處理。首先應(yīng)該判斷是否為post請求,然后拿到body中的數(shù)據(jù),再對數(shù)據(jù)進行解析。
const http = require('http')
// 處理url的模塊
const url = require('url')
const server = new http.Server((req, res) => {
// 獲取客戶端傳過來的url中的pathname
const { pathname } = url.parse(req.url)
// 判斷是否為login
if (pathname === '/login') {
// 判斷客戶端發(fā)送的是否為post請求
if (req.method === 'POST') {
// 定義客戶端傳過來數(shù)據(jù)的默認編碼格式
req.setEncoding('utf-8')
// req.setEncoding('binary') binary定義二進制編碼
// 拿到body中的數(shù)據(jù)
// body中的數(shù)據(jù)是通過流來寫入的
// 當監(jiān)聽到data事件,獲取到輸入流,也就是body中相關(guān)的內(nèi)容,可以返回這個data的結(jié)果
req.on('data', (data) => {
// JSON.parse()把對象中的字符串轉(zhuǎn)成js對象
// {"username":"阿花","passward":"123"} ---> {username: 'ahua',password: 123}
const { username, passward } = JSON.parse(data)
console.log(username, passward)
})
}
}
res.end('請求結(jié)果')
})
server.listen('8089', 'localhost', () => {
console.log("serve啟動成功")
})
服務(wù)器打印請求結(jié)果

這樣就完成了一個簡單的服務(wù)器交互流程。
到此這篇關(guān)于node.js+postman實現(xiàn)模擬HTTP服務(wù)器與客戶端交互的文章就介紹到這了,更多相關(guān)node.js+postman 服務(wù)器與客戶端交互內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nodejs處理http請求實例詳解之get和post
- Node.js中的HTTP?Server對象與GET、POST請求
- nodejs 使用http進行post或get請求的實例(攜帶cookie)
- nodejs使用http模塊發(fā)送get與post請求的方法示例
- nodejs實現(xiàn)HTTPS發(fā)起POST請求
- 從零開始學(xué)習(xí)Node.js系列教程一:http get和post用法分析
- 輕松創(chuàng)建nodejs服務(wù)器(10):處理POST請求
- nodejs之get/post請求的幾種方式小結(jié)
- Node.js如何響應(yīng)Ajax的POST請求并且保存為JSON文件詳解
- NodeJS收發(fā)GET和POST請求的示例代碼
- Node發(fā)出HTTP POST請求的方法實例小結(jié)
相關(guān)文章
如何解決安裝websocket還是報錯Cannot find module'ws&apos
這篇文章主要介紹了如何解決安裝websocket還是報Cannot find module'ws'問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
基于Node.js實現(xiàn)數(shù)據(jù)轉(zhuǎn)換工具
在前端項目中,利用?Excel?表格和?Node.js?實現(xiàn)數(shù)據(jù)轉(zhuǎn)換工具,可以有效優(yōu)化增刪改查等功能,下面小編就來和大家講講具體的實現(xiàn)步驟吧2025-02-02
如何在NestJS中添加對Stripe的WebHook驗證詳解
這篇文章主要為大家介紹了如何在NestJS中添加對Stripe的WebHook驗證詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
Node.JS在命令行中檢查Chrome瀏覽器是否安裝并打開指定網(wǎng)址
這篇文章主要介紹了Node.JS在命令行中檢查Chrome瀏覽器是否安裝,并打開指定網(wǎng)址,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05

