-
案例目標(biāo):實現(xiàn)GET的主要屬性為req.method,并且生成隨機(jī)數(shù)
- 使用nodejs,實現(xiàn)一個Ajax的get請求方式
- 將lib里的data.json文件請求獲取出來
-
data里面的數(shù)據(jù)為
-
{
-
"success":[
-
{
-
"data": "你贏了",
-
"message":"請求成功",
-
"code": "200"
-
}
-
],
-
"fail":[
-
{
-
"data": "你輸了",
-
"message":"請求失敗",
-
"code": "200"
-
}
-
]
-
}
-
-
案例準(zhǔn)備
-
-
案例代碼
-
// 1.定義核心模塊 http fs path
-
const http = require('http')
-
const fs = require('fs')
-
const path = require('path')
-
// 2.創(chuàng)建服務(wù)
-
const server = http.createServer((req, res) => {
-
// 2.1 如果url地址為/getList 執(zhí)行代碼
-
// -req.method 為請求類型
-
// 生成隨機(jī)數(shù),大于0.5為0,小于為1
-
let render = Math.random() > 0.5 ? 0 : 1
-
// console.log(render)
-
-
// 2.2 拼接字符串,為讀取數(shù)據(jù)傳參
-
// -__dirname為獲取的目錄地址
-
// -lib為存放數(shù)據(jù)的名字,data.json為讀取的文件
-
const filepath = path.join(__dirname, 'lib', 'data.json')
-
// -console.log('拼接的地址', filepath)
-
if (render === 0 && req.url === '/getList' && req.method === 'GET') {
-
// 2.3 讀取data文件
-
fs.readFile(filepath, 'utf8', (err, data) => {
-
// - 打印錯誤信息
-
if (err) {
-
console.log('錯誤日志', err)
-
return
-
}
-
// 讀取的為json數(shù)據(jù),設(shè)置請求頭,如果不設(shè)置,則打印亂碼信息
-
res.setHeader('content-type', 'application/json;charset=utf8')
-
// - 返回數(shù)據(jù)
-
let jsonArr = JSON.parse(data)['success']
-
let jsonStr = JSON.stringify(jsonArr)
-
res.end(jsonStr)
-
})
-
} else if (render === 1 && req.url === '/getList' && req.method === 'GET') {
-
fs.readFile(filepath, 'utf8', (err, data) => {
-
// - 打印錯誤信息
-
if (err) {
-
console.log('錯誤日志', err)
-
return
-
}
-
// 讀取的為json數(shù)據(jù),設(shè)置請求頭,如果不設(shè)置,則打印亂碼信息
-
res.setHeader('content-type', 'application/json;charset=utf8')
-
// - 返回數(shù)據(jù)
-
let jsonArr = JSON.parse(data)['fail']
-
let jsonStr = JSON.stringify(jsonArr)
-
res.end(jsonStr)
-
})
-
}
-
})
-
// 3.啟動服務(wù)
-
// 8111為端口號,默認(rèn)8000,盡量使用8開頭,如果使用其他,咋不會正常運行,會報錯
-
server.listen(8111, () => {
-
// 服務(wù)提示信息,運行代碼后的提示
-
console.log('端口1111已經(jīng)開啟')
-
})
-