node.js+postman實(shí)現(xiàn)模擬HTTP服務(wù)器與客戶端交互
當(dāng)應(yīng)用程序(客戶端)需要某一個(gè)資源時(shí),可以向一臺(tái)服務(wù)器通過(guò)http請(qǐng)求獲取到這個(gè)資源。提供資源的服務(wù)器就是web服務(wù)器(本文用node.js創(chuàng)建),用postman模擬客戶端向服務(wù)器發(fā)送請(qǐng)求。
一、node搭建HTTP服務(wù)器
node中使用 http 模塊來(lái)創(chuàng)建 HTTP 服務(wù)器, 每當(dāng)接收到新的請(qǐng)求時(shí),request 事件會(huì)被調(diào)用,并提供兩個(gè)對(duì)象:一個(gè)請(qǐng)求req(http.IncomingMessage 對(duì)象)和一個(gè)響應(yīng)res(http.ServerResponse 對(duì)象)。
request 提供了請(qǐng)求的詳細(xì)信息。 通過(guò)它可以訪問(wèn)請(qǐng)求頭和請(qǐng)求的數(shù)據(jù)。(客戶端–>服務(wù)器)
response 用于構(gòu)造要返回給客戶端的數(shù)據(jù)(服務(wù)器–>客戶端)。下面是一個(gè)簡(jiǎn)單的HTTP web服務(wù)器示例。
下面就是一個(gè)簡(jiǎn)單的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") // 相當(dāng)于res.writer("hollow server")+res.end() }) // 監(jiān)聽(tīng)服務(wù)器,當(dāng)服務(wù)器就緒時(shí),listen 回調(diào)函數(shù)會(huì)被調(diào)用 //控制臺(tái)打印啟動(dòng)成功 server.listen('8089', 'localhost', () => { console.log("啟動(dòng)成功") })
這時(shí)候你的本地服務(wù)器就搭建完畢了,可以去瀏覽器打開(kāi)localhost:8089查看
二、HTTP服務(wù)器處理get請(qǐng)求
Postman 是一種常用的接口測(cè)試工具,可以發(fā)送幾乎所有類型的HTTP請(qǐng)求。Postman適用于不同的操作系統(tǒng),Postman Mac、Windows X32、Windows X64、Linux系統(tǒng),還支持postman 瀏覽器擴(kuò)展程序、postman chrome應(yīng)用程序等。
下載也十分簡(jiǎn)單,可以點(diǎn)擊這里直接去官網(wǎng)下載👉👉👉 Download Postman
1、postman發(fā)送get請(qǐng)求
在postman中新建一個(gè)request請(qǐng)求,在Enter request url 中填寫(xiě)上面我們用node.js創(chuàng)建的HTTP服務(wù)器的主機(jī)地址以及用戶名和密碼http://localhost:8089/login?username=ahua&password=123
,請(qǐng)求類型選擇GET,點(diǎn)擊send,postman就會(huì)向服務(wù)器發(fā)送一個(gè)get請(qǐng)求
2、服務(wù)器解析
服務(wù)器這邊接收到客戶端(postman)的get請(qǐng)求,對(duì)發(fā)送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理
const http = require('http') // 處理url的模塊 const url = require('url') // 處理query的模塊 const qs = require('querystring') const server = new http.Server((req, res) => { // request對(duì)象中封裝了客戶端給我們服務(wù)器傳遞過(guò)來(lái)的所有信息 // 對(duì)url進(jìn)行解析 const { pathname, query } = url.parse(req.url) if (pathname === '/login') { //console.log(query) // qs的parse方法可以對(duì)query進(jìn)行處理 // 將字符串類型轉(zhuǎn)換為js對(duì)象 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('請(qǐng)求結(jié)果') } console.log(req.url) //打印請(qǐng)求類型 console.log(req.method) //請(qǐng)求頭 console.log(req.headers) }) server.listen('8089', 'localhost', () => { console.log("serve啟動(dòng)成功") })
服務(wù)器這邊的解析結(jié)果
三、HTTP服務(wù)器處理post請(qǐng)求
1、postman發(fā)送post請(qǐng)求
上面get請(qǐng)求中將用戶名和密碼放在地址欄可能不夠安全,處理賬號(hào)密碼想穩(wěn)妥一點(diǎn),現(xiàn)在將他們放在body里用json文件傳給服務(wù)器。
下圖所示便是postman將username和password放在json文件中通過(guò)bady傳遞給服務(wù)器的操作
2、服務(wù)器解析
服務(wù)器這邊接收到客戶端(postman)的post請(qǐng)求,對(duì)發(fā)送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理。首先應(yīng)該判斷是否為post請(qǐng)求,然后拿到body中的數(shù)據(jù),再對(duì)數(shù)據(jù)進(jìn)行解析。
const http = require('http') // 處理url的模塊 const url = require('url') const server = new http.Server((req, res) => { // 獲取客戶端傳過(guò)來(lái)的url中的pathname const { pathname } = url.parse(req.url) // 判斷是否為login if (pathname === '/login') { // 判斷客戶端發(fā)送的是否為post請(qǐng)求 if (req.method === 'POST') { // 定義客戶端傳過(guò)來(lái)數(shù)據(jù)的默認(rèn)編碼格式 req.setEncoding('utf-8') // req.setEncoding('binary') binary定義二進(jìn)制編碼 // 拿到body中的數(shù)據(jù) // body中的數(shù)據(jù)是通過(guò)流來(lái)寫(xiě)入的 // 當(dāng)監(jiān)聽(tīng)到data事件,獲取到輸入流,也就是body中相關(guān)的內(nèi)容,可以返回這個(gè)data的結(jié)果 req.on('data', (data) => { // JSON.parse()把對(duì)象中的字符串轉(zhuǎn)成js對(duì)象 // {"username":"阿花","passward":"123"} ---> {username: 'ahua',password: 123} const { username, passward } = JSON.parse(data) console.log(username, passward) }) } } res.end('請(qǐng)求結(jié)果') }) server.listen('8089', 'localhost', () => { console.log("serve啟動(dòng)成功") })
服務(wù)器打印請(qǐng)求結(jié)果
這樣就完成了一個(gè)簡(jiǎn)單的服務(wù)器交互流程。
到此這篇關(guān)于node.js+postman實(shí)現(xiàn)模擬HTTP服務(wù)器與客戶端交互的文章就介紹到這了,更多相關(guān)node.js+postman 服務(wù)器與客戶端交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nodejs處理http請(qǐng)求實(shí)例詳解之get和post
- Node.js中的HTTP?Server對(duì)象與GET、POST請(qǐng)求
- nodejs 使用http進(jìn)行post或get請(qǐng)求的實(shí)例(攜帶cookie)
- nodejs使用http模塊發(fā)送get與post請(qǐng)求的方法示例
- nodejs實(shí)現(xiàn)HTTPS發(fā)起POST請(qǐng)求
- 從零開(kāi)始學(xué)習(xí)Node.js系列教程一:http get和post用法分析
- 輕松創(chuàng)建nodejs服務(wù)器(10):處理POST請(qǐng)求
- nodejs之get/post請(qǐng)求的幾種方式小結(jié)
- Node.js如何響應(yīng)Ajax的POST請(qǐng)求并且保存為JSON文件詳解
- NodeJS收發(fā)GET和POST請(qǐng)求的示例代碼
- Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)
相關(guān)文章
node實(shí)現(xiàn)爬蟲(chóng)的幾種簡(jiǎn)易方式
這篇文章主要給大家介紹了關(guān)于node實(shí)現(xiàn)爬蟲(chóng)的幾種簡(jiǎn)易方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08在Node.js中使用Express實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能
在現(xiàn)代Web應(yīng)用中,視頻內(nèi)容和互動(dòng)功能(如評(píng)論)的結(jié)合極大地增加了用戶的參與度,本文將通過(guò)一個(gè)具體的例子,展示如何在Node.js環(huán)境中使用Express框架來(lái)實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能,需要的朋友可以參考下2024-04-04node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能
這篇文章主要為大家詳細(xì)介紹了node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07基于socket.io+express實(shí)現(xiàn)多房間聊天
本文給大家分享的是使用node.js,基于socket.io+express實(shí)現(xiàn)多房間聊天的代碼,非常的實(shí)用,有需要的小伙伴可以來(lái)參考下2016-03-03Node.js中的EventEmitter類使用小結(jié)
EventEmitter 是 Node.js 中的一個(gè)核心模塊,它提供了一種實(shí)現(xiàn)事件驅(qū)動(dòng)編程的機(jī)制,它是一個(gè)基于觀察者模式的類,用于在應(yīng)用程序中處理事件和觸發(fā)事件,這篇文章主要介紹了Node.js中的EventEmitter類介紹,需要的朋友可以參考下2023-12-12nodejs實(shí)現(xiàn)的http、https 請(qǐng)求封裝操作示例
這篇文章主要介紹了nodejs實(shí)現(xiàn)的http、https 請(qǐng)求封裝操作,結(jié)合實(shí)例形式分析了node.js針對(duì)http、https 請(qǐng)求的封裝與使用相關(guān)操作技巧,需要的朋友可以參考下2020-02-02