nodejs處理http請求實例詳解之get和post
前言:http 請求概述
從一個經(jīng)典的面試題入手,簡單了解下 http 請求:
Q: 從瀏覽器輸入 url 到頁面顯示的整個過程?
第一步:DNS 解析, 建立 TCP 連接,發(fā)送 http 請求,簡單來講就是——
- 先進行 DNS 解析,即通過域名解析到對應的 ip 地址;
- 找到 ip 地址后,建立 TCP 連接,即三次握手—— 第一次,客戶端詢問服務器是否可用; 第二次,服務端告訴客戶端自己可用; 第三次,客戶端表示知道了,接下來即將訪問;
- 然后再去發(fā)送http請求;
第二步:server 端接收到 http 請求,處理并返回;
第三步:客戶端接收到返回的數(shù)據(jù),處理數(shù)據(jù)(如渲染頁面,執(zhí)行js)
nodejs 處理 get 請求
簡單的 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 // 獲取請求的 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)建一個 server。該方法接收一個函數(shù),返回一個 server 對象。
req:客戶端傳過來的信息res: 服務端要返回的數(shù)據(jù)res.end: 結(jié)束并返回數(shù)據(jù)。只能發(fā)送 Buffer 或 String 類型的數(shù)據(jù)querystring:nodejs 自帶的模塊。querystring.parse: 將字符串轉(zhuǎn)換為對象。比如:hobby=baba&name=gougou會被轉(zhuǎn)為{"hobby":"baba","name":"gougou"}server.listen(path, [callback]):在指定路徑監(jiān)聽。 異步。
測試一下
我們可以通過 node 文件名 的方式運行我們的代碼:

然后可以去瀏覽器測試一下:訪問localhost:8000,然后模擬 get 請求,看是否能返回 querystring 的內(nèi)容。

再看下終端:

nodejs 處理 post 請求
簡單的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) // 二進制格式
postData += chunk.toString() // 將二進制格式轉(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:二進制格式,可通過toString轉(zhuǎn)成字符串格式。
測試一下
post 請求我們可以使用 postman 工具來調(diào)試。如圖(使用方式見圖就一目了然了,就不一一贅述了):

點擊 send 發(fā)送請求后,可以看下終端:

補充:postman
Postman 是一款常用的接口調(diào)試工具,可以發(fā)送幾乎所有類型的 HTTP 請求。
我們在學習和使用 nodejs 的過程中,可以借助它來調(diào)試接口。
postman 的下載
可以在 chrome 上安裝擴展程序(前提是能連接到谷歌商店)
可以下載安裝 postman 客戶端工具。
總結(jié)
到此這篇關于nodejs處理http請求實例詳解之get和post的文章就介紹到這了,更多相關nodejs處理http請求get和post內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
深入理解nodejs搭建靜態(tài)服務器(實現(xiàn)命令行)
這篇文章主要介紹了深入理解nodejs搭建靜態(tài)服務器(實現(xiàn)命令行),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02
Nodejs中的計時器(setTimeout?setIntervals?etImmediate)使用案例解析
這篇文章主要介紹了Nodejs中的計時器(setTimeout?setIntervals?etImmediate)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
Node.js中的npm單獨與批量升級依賴包的方式超詳細講解
npm outdated僅檢查所有已安裝包的依賴關系,并將當前版本遠程倉庫中的最新版本進行對比,不會升級,這篇文章主要介紹了Node.js中的npm單獨與批量升級依賴包的方式超詳細講解,需要的朋友可以參考下2024-02-02
Node+Express搭建HTTPS服務的實現(xiàn)
最近開發(fā)需要搭建一個https的服務,正好最近在用nodejs和express,本文章主要介紹了Node+Express搭建HTTPS服務的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-12-12
Linux 安裝nodejs環(huán)境及路徑配置詳細步驟
大家都知道linux安裝nodejs有兩種比較常用的方法,一種解壓即可用的方法操作比較簡便,另一種方法通過編譯來安裝,本文重點給大家講解第一種方法,感興趣的朋友跟隨小編一起看看吧2021-11-11

