- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- node.js+postman實(shí)現模擬HTTP服務(wù)器與客戶(hù)端交互
當應用程序(客戶(hù)端)需要某一個(gè)資源時(shí),可以向一臺服務(wù)器通過(guò)http請求獲取到這個(gè)資源。提供資源的服務(wù)器就是web服務(wù)器(本文用node.js創(chuàng )建),用postman模擬客戶(hù)端向服務(wù)器發(fā)送請求。
node中使用 http 模塊來(lái)創(chuàng )建 HTTP 服務(wù)器, 每當接收到新的請求時(shí),request 事件會(huì )被調用,并提供兩個(gè)對象:一個(gè)請求req(http.IncomingMessage 對象)和一個(gè)響應res(http.ServerResponse 對象)。
request 提供了請求的詳細信息。 通過(guò)它可以訪(fǎng)問(wèn)請求頭和請求的數據。(客戶(hù)端–>服務(wù)器)
response 用于構造要返回給客戶(hù)端的數據(服務(wù)器–>客戶(hù)端)。下面是一個(gè)簡(jiǎn)單的HTTP web服務(wù)器示例。
下面就是一個(gè)簡(jiǎn)單的HTTP服務(wù)器的例子
//導入http模塊 const http = require('http') // 創(chuàng )建http服務(wù)器 const server = http.createServer((req, res) => { //設置 statusCode 屬性為 200,以表明響應成功 res.statusCode = 200 // res本質(zhì)上繼承了stream.Writable的類(lèi) // 向客戶(hù)端發(fā)送完響應頭和正文后告訴服務(wù)器本次消息傳輸結束 res.end("hollow server") // 相當于res.writer("hollow server")+res.end() }) // 監聽(tīng)服務(wù)器,當服務(wù)器就緒時(shí),listen 回調函數會(huì )被調用 //控制臺打印啟動(dòng)成功 server.listen('8089', 'localhost', () => { console.log("啟動(dòng)成功") })
這時(shí)候你的本地服務(wù)器就搭建完畢了,可以去瀏覽器打開(kāi)localhost:8089查看
Postman 是一種常用的接口測試工具,可以發(fā)送幾乎所有類(lèi)型的HTTP請求。Postman適用于不同的操作系統,Postman Mac、Windows X32、Windows X64、Linux系統,還支持postman 瀏覽器擴展程序、postman chrome應用程序等。
下載也十分簡(jiǎn)單,可以點(diǎn)擊這里直接去官網(wǎng)下載👉👉👉
在postman中新建一個(gè)request請求,在Enter request url 中填寫(xiě)上面我們用node.js創(chuàng )建的HTTP服務(wù)器的主機地址以及用戶(hù)名和密碼http://localhost:8089/login?username=ahua&password=123
,請求類(lèi)型選擇GET,點(diǎn)擊send,postman就會(huì )向服務(wù)器發(fā)送一個(gè)get請求
服務(wù)器這邊接收到客戶(hù)端(postman)的get請求,對發(fā)送過(guò)來(lái)的數據進(jìn)行處理
const http = require('http') // 處理url的模塊 const url = require('url') // 處理query的模塊 const qs = require('querystring') const server = new http.Server((req, res) => { // request對象中封裝了客戶(hù)端給我們服務(wù)器傳遞過(guò)來(lái)的所有信息 // 對url進(jìn)行解析 const { pathname, query } = url.parse(req.url) if (pathname === '/login') { //console.log(query) // qs的parse方法可以對query進(jìn)行處理 // 將字符串類(lèi)型轉換為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('請求結果') } console.log(req.url) //打印請求類(lèi)型 console.log(req.method) //請求頭 console.log(req.headers) }) server.listen('8089', 'localhost', () => { console.log("serve啟動(dòng)成功") })
服務(wù)器這邊的解析結果
上面get請求中將用戶(hù)名和密碼放在地址欄可能不夠安全,處理賬號密碼想穩妥一點(diǎn),現在將他們放在body里用json文件傳給服務(wù)器。
下圖所示便是postman將username和password放在json文件中通過(guò)bady傳遞給服務(wù)器的操作
服務(wù)器這邊接收到客戶(hù)端(postman)的post請求,對發(fā)送過(guò)來(lái)的數據進(jìn)行處理。首先應該判斷是否為post請求,然后拿到body中的數據,再對數據進(jìn)行解析。
const http = require('http') // 處理url的模塊 const url = require('url') const server = new http.Server((req, res) => { // 獲取客戶(hù)端傳過(guò)來(lái)的url中的pathname const { pathname } = url.parse(req.url) // 判斷是否為login if (pathname === '/login') { // 判斷客戶(hù)端發(fā)送的是否為post請求 if (req.method === 'POST') { // 定義客戶(hù)端傳過(guò)來(lái)數據的默認編碼格式 req.setEncoding('utf-8') // req.setEncoding('binary') binary定義二進(jìn)制編碼 // 拿到body中的數據 // body中的數據是通過(guò)流來(lái)寫(xiě)入的 // 當監聽(tīng)到data事件,獲取到輸入流,也就是body中相關(guān)的內容,可以返回這個(gè)data的結果 req.on('data', (data) => { // JSON.parse()把對象中的字符串轉成js對象 // {"username":"阿花","passward":"123"} ---> {username: 'ahua',password: 123} const { username, passward } = JSON.parse(data) console.log(username, passward) }) } } res.end('請求結果') }) server.listen('8089', 'localhost', () => { console.log("serve啟動(dòng)成功") })
服務(wù)器打印請求結果
這樣就完成了一個(gè)簡(jiǎn)單的服務(wù)器交互流程。
到此這篇關(guān)于node.js+postman實(shí)現模擬HTTP服務(wù)器與客戶(hù)端交互的文章就介紹到這了,更多相關(guān)node.js+postman 服務(wù)器與客戶(hù)端交互內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站