nodejs處理http請(qǐng)求實(shí)例詳解之get和post
前言:http 請(qǐng)求概述
從一個(gè)經(jīng)典的面試題入手,簡(jiǎn)單了解下 http 請(qǐng)求:
Q: 從瀏覽器輸入 url 到頁(yè)面顯示的整個(gè)過程?
第一步:DNS 解析, 建立 TCP 連接,發(fā)送 http 請(qǐng)求,簡(jiǎn)單來講就是——
- 先進(jìn)行 DNS 解析,即通過域名解析到對(duì)應(yīng)的 ip 地址;
- 找到 ip 地址后,建立 TCP 連接,即三次握手—— 第一次,客戶端詢問服務(wù)器是否可用; 第二次,服務(wù)端告訴客戶端自己可用; 第三次,客戶端表示知道了,接下來即將訪問;
- 然后再去發(fā)送http請(qǐng)求;
第二步:server 端接收到 http 請(qǐng)求,處理并返回;
第三步:客戶端接收到返回的數(shù)據(jù),處理數(shù)據(jù)(如渲染頁(yè)面,執(zhí)行js)
nodejs 處理 get 請(qǐng)求
簡(jiǎn)單的 demo
const http = require('http') const querystring = require('querystring') // GET const server = http.createServer((req, res) => { console.log('req.method:', req.method) // GET const url = req.url // 獲取請(qǐng)求的 url req.query = querystring.parse(url.split('?')[1]) // 解析 querystring res.end(JSON.stringify(req.query)) // 將 querystring 返回 }) server.listen(8000) console.log('GET OK~~~')
通過 require(‘http’)
獲取 Nodejs 原生提供的 http 模塊。
通過 http.createServer
創(chuàng)建一個(gè) server。該方法接收一個(gè)函數(shù),返回一個(gè) server 對(duì)象。
req
:客戶端傳過來的信息res
: 服務(wù)端要返回的數(shù)據(jù)res.end
: 結(jié)束并返回?cái)?shù)據(jù)。只能發(fā)送 Buffer 或 String 類型的數(shù)據(jù)querystring
:nodejs 自帶的模塊。querystring.parse
: 將字符串轉(zhuǎn)換為對(duì)象。比如:hobby=baba&name=gougou
會(huì)被轉(zhuǎn)為{"hobby":"baba","name":"gougou"}
server.listen(path, [callback])
:在指定路徑監(jiān)聽。 異步。
測(cè)試一下
我們可以通過 node 文件名
的方式運(yùn)行我們的代碼:
然后可以去瀏覽器測(cè)試一下:訪問localhost:8000,然后模擬 get 請(qǐng)求,看是否能返回 querystring 的內(nèi)容。
再看下終端:
nodejs 處理 post 請(qǐng)求
簡(jiǎn)單的demo
const http = require('http') const server = http.createServer((req, res) => { console.log('req content-type:', req.headers['content-type']) let postData = '' // 存放客戶端傳來的數(shù)據(jù) req.on('data', chunk => { console.log('chunk', chunk) // 二進(jìn)制格式 postData += chunk.toString() // 將二進(jìn)制格式轉(zhuǎn)成字符串格式,拼接到 postData 上 }) req.on('end', () => { console.log('postData:', postData) res.end('芽~~~~~~~狗狗來啦!') }) }) server.listen(8000) console.log('POST OK~~~')
req.on('data', callback)
:接受客戶端傳來的數(shù)據(jù),以數(shù)據(jù)流的方式。chunk
:二進(jìn)制格式,可通過toString
轉(zhuǎn)成字符串格式。
測(cè)試一下
post 請(qǐng)求我們可以使用 postman 工具來調(diào)試。如圖(使用方式見圖就一目了然了,就不一一贅述了):
點(diǎn)擊 send 發(fā)送請(qǐng)求后,可以看下終端:
補(bǔ)充:postman
Postman 是一款常用的接口調(diào)試工具,可以發(fā)送幾乎所有類型的 HTTP 請(qǐng)求。
我們?cè)趯W(xué)習(xí)和使用 nodejs 的過程中,可以借助它來調(diào)試接口。
postman 的下載
可以在 chrome 上安裝擴(kuò)展程序(前提是能連接到谷歌商店)
可以下載安裝 postman 客戶端工具。
- Postman官網(wǎng)下載地址 或者點(diǎn)擊這里下載
- Postman for MAC 或者點(diǎn)擊這里下載
- Postman for windows 64 或者點(diǎn)擊這里下載
總結(jié)
到此這篇關(guān)于nodejs處理http請(qǐng)求實(shí)例詳解之get和post的文章就介紹到這了,更多相關(guān)nodejs處理http請(qǐng)求get和post內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js創(chuàng)建一個(gè)Express服務(wù)的方法詳解
這篇文章主要介紹了Node.js創(chuàng)建一個(gè)Express服務(wù)的方法,結(jié)合實(shí)例形式分析了node.js創(chuàng)建Express服務(wù)的具體步驟、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下2020-01-01node.js文件系統(tǒng)之文件寫入實(shí)例詳解
Node.js和其他語言一樣,也有文件操作,下面這篇文章主要給大家介紹了關(guān)于node.js文件系統(tǒng)之文件寫入的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03nodejs express配置自簽名https服務(wù)器的方法
這篇文章主要介紹了nodejs express配置自簽名https服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05nodejs(officegen)+vue(axios)在客戶端導(dǎo)出word文檔的方法
這篇文章主要介紹了nodejs(officegen)+vue(axios)在客戶端導(dǎo)出word文檔的方法,需要的朋友可以參考下2018-07-07Node.js抓取中文網(wǎng)頁(yè)亂碼問題和解決方法
這篇文章主要介紹了Node.js抓取中文網(wǎng)頁(yè)亂碼問題和解決方法,本文講解了使用一些開源庫(kù)解決抓取中出現(xiàn)的亂碼問題,需要的朋友可以參考下2015-02-02Node實(shí)現(xiàn)前端本地開發(fā)接口代理服務(wù)
本文主要介紹了Node實(shí)現(xiàn)前端本地開發(fā)接口代理服務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05淺談NodeJs之?dāng)?shù)據(jù)庫(kù)異常處理
這篇文章主要介紹了淺談NodeJs之?dāng)?shù)據(jù)庫(kù)異常處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10