node.js案例,寫一個(gè)簡單的get請(qǐng)求,請(qǐng)求有50%的概率,要求數(shù)據(jù)在一個(gè)json文件中

2021-9-15    前端達(dá)人

  • 案例目標(biāo):實(shí)現(xiàn)GET的主要屬性為req.method,并且生成隨機(jī)數(shù)

  1. 使用nodejs,實(shí)現(xiàn)一個(gè)Ajax的get請(qǐng)求方式
  2. 將lib里的data.json文件請(qǐng)求獲取出來
  3. data里面的數(shù)據(jù)為
    
                            
    1. {
    2. "success":[
    3. {
    4. "data": "你贏了",
    5. "message":"請(qǐng)求成功",
    6. "code": "200"
    7. }
    8. ],
    9. "fail":[
    10. {
    11. "data": "你輸了",
    12. "message":"請(qǐng)求失敗",
    13. "code": "200"
    14. }
    15. ]
    16. }
  •  案例準(zhǔn)備

  •  案例代碼

    
                            
    1. // 1.定義核心模塊 http fs path
    2. const http = require('http')
    3. const fs = require('fs')
    4. const path = require('path')
    5. // 2.創(chuàng)建服務(wù)
    6. const server = http.createServer((req, res) => {
    7. // 2.1 如果url地址為/getList 執(zhí)行代碼
    8. // -req.method 為請(qǐng)求類型
    9. // 生成隨機(jī)數(shù),大于0.5為0,小于為1
    10. let render = Math.random() > 0.5 ? 0 : 1
    11. // console.log(render)
    12. // 2.2 拼接字符串,為讀取數(shù)據(jù)傳參
    13. // -__dirname為獲取的目錄地址
    14. // -lib為存放數(shù)據(jù)的名字,data.json為讀取的文件
    15. const filepath = path.join(__dirname, 'lib', 'data.json')
    16. // -console.log('拼接的地址', filepath)
    17. if (render === 0 && req.url === '/getList' && req.method === 'GET') {
    18. // 2.3 讀取data文件
    19. fs.readFile(filepath, 'utf8', (err, data) => {
    20. // - 打印錯(cuò)誤信息
    21. if (err) {
    22. console.log('錯(cuò)誤日志', err)
    23. return
    24. }
    25. // 讀取的為json數(shù)據(jù),設(shè)置請(qǐng)求頭,如果不設(shè)置,則打印亂碼信息
    26. res.setHeader('content-type', 'application/json;charset=utf8')
    27. // - 返回?cái)?shù)據(jù)
    28. let jsonArr = JSON.parse(data)['success']
    29. let jsonStr = JSON.stringify(jsonArr)
    30. res.end(jsonStr)
    31. })
    32. } else if (render === 1 && req.url === '/getList' && req.method === 'GET') {
    33. fs.readFile(filepath, 'utf8', (err, data) => {
    34. // - 打印錯(cuò)誤信息
    35. if (err) {
    36. console.log('錯(cuò)誤日志', err)
    37. return
    38. }
    39. // 讀取的為json數(shù)據(jù),設(shè)置請(qǐng)求頭,如果不設(shè)置,則打印亂碼信息
    40. res.setHeader('content-type', 'application/json;charset=utf8')
    41. // - 返回?cái)?shù)據(jù)
    42. let jsonArr = JSON.parse(data)['fail']
    43. let jsonStr = JSON.stringify(jsonArr)
    44. res.end(jsonStr)
    45. })
    46. }
    47. })
    48. // 3.啟動(dòng)服務(wù)
    49. // 8111為端口號(hào),默認(rèn)8000,盡量使用8開頭,如果使用其他,咋不會(huì)正常運(yùn)行,會(huì)報(bào)錯(cuò)
    50. server.listen(8111, () => {
    51. // 服務(wù)提示信息,運(yùn)行代碼后的提示
    52. console.log('端口1111已經(jīng)開啟')
    53. })











藍(lán)藍(lán)設(shè)計(jì)建立了UI設(shè)計(jì)分享群,每天會(huì)分享國內(nèi)外的一些優(yōu)秀設(shè)計(jì),如果有興趣的話,可以進(jìn)入一起成長學(xué)習(xí),請(qǐng)掃碼藍(lán)小助,報(bào)下信息,藍(lán)小助會(huì)請(qǐng)您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請(qǐng)與我們聯(lián)系。

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

轉(zhuǎn)自:csdn
免責(zé)聲明:藍(lán)藍(lán)設(shè)計(jì)尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問題,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,我們立即更正或刪除。

藍(lán)藍(lán)設(shè)計(jì)www.bouu.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

分享本文至:

日歷

鏈接

個(gè)人資料

存檔