使用NodeJS獲取GET請求,主要是通過使用NodeJS內置的querystring
庫處理req.url
中的查詢字符串來進行。
- 通過
?
將req.url
分解成為一個包含path
和query
字符串的數組 - 通過
querystring.parse()
方法,對格式為key1=value1&key2=value2
的查詢字符串進行解析,並將其轉換成為標准的JS對象
const http = require('http')
const querystring = require('querystring')
let app = http.createServer((req, res) => {
let urlArray = req.url.split('?')
req.query = {}
if (urlArray && urlArray.length > 0) {
if (urlArray[1]) {
req.query = querystring.parse(urlArray[1])
}
}
res.end(
JSON.stringify(req.query)
)
})
app.listen(8000, () => {
console.log('running on 8000')
})
NodeJS獲取POST數據
NodeJS獲取POST數據,主要是通過響應req
的data
事件和end
事件來進行
- 通過
req.on('data')
,並傳入回調函數,響應數據上傳的事件,並對數據進行收集 - 通過
req.on('end')
,並傳入回調函數,響應數據上傳結束的事件,並判斷是否存在上傳數據。如果存在,就執行后面的邏輯。// NodeJS獲取POST請求 const http = require('http') let app = http.createServer((req, res) => { let postData = '' req.on('data', chunk => { postData += chunk.toString() }) req.on('end', () => { if (postData) { res.setHeader('Content-type', 'application/json') res.end(postData) } console.log(JSON.parse(postData)) }) }) app.listen(8000, () => { console.log('running on 8000') })
get和post合並 const url = require('url'); const http = require('http'); const server = http.createServer((req, res) => { if (req.method === 'GET') { let urlObj = url.parse(req.url, true); res.end(JSON.stringify(urlObj.query)) } else if (req.method === 'POST') { let postData = ''; req.on('data', chunk => { postData += chunk; }) req.on('end', () => { console.log(postData) }) res.end(JSON.stringify({ data: '請求成功', code: 0 })) } }) server.listen(3000, () => { console.log('監聽3000端⼝') console.log(1111) console.log(22) }