日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

對于前端來說,網絡請求主要就是用 ajax 的方式去處理。所以本文也會站在前端角度簡單講解 Node 中如何使用 http 模塊。

前后端對接時,現在常用的請求方法有 GET、POST、PUT、PATCH、DELETE。當然,還有其他方法,但本文主要面向新手,希望能做到快速起步。所以本文只講 GET 和 POST 這兩種最最最常用的方法。

在敲代碼前,你首先需要準備一個 編輯器(我用vs code)、瀏覽器、postman 還有安裝好 Node.js 。

創建服務

Node.js 提供了 http 模塊,可用于網絡請求。

創建一個 js 文件,輸入以下代碼。(本例的文件命名為 index.js)

const http = require('http')

const server = http.createServer((res, req) => {
  req.end('hello world')
})

server.listen(8000, () => {
  console.log('http://localhost:8000')
})

解釋:

  • Node.js 使用 commonjs 語法,所以引入 http 模塊使用了 require 的方法。
  • http 模塊有一個 createServer 方法,該方法的參數是一個函數,函數里又有2個參數,res 是前端發送請求帶過來的信息;req 是后端返回信息給前端時的一些方法和屬性的集合。
  • 通過 req.end 方法,可以返回一段字符串給前端。
  • 通過 listen 方法可以設置需要監聽的端口號,第二個參數是一個函數,我在控制臺里輸出 http://localhost:8000 是方便啟動服務后方便自己打開這個地址。

使用 Node.js 運行上面的代碼:

node index.js

運行完上面的命令,控制臺應該會輸出 http://localhost:8000 ,此時打開瀏覽器,輸入 http://localhost:8000 后頁面上會出現 “hello world”,證明服務創建成功,并且可以訪問了。

 

GET

其實上一步所用的也是 GET 方法來訪問后端,但上一步并沒有解析參數。

get 請求的參數通常是掛在 url 后面的,比如 http://localhost:8000?msg=hello

如果有參數,會用 ? 開始,然后使用 參數名=值 的寫法。

如果有多個參數,會使用 & 將參數區分開來:

http://localhost:8000?key1=value1&key2=value2&key3=value3

在 Node.js 里,如果需要解析 url 的參數,可以使用 node:querystring 模塊。

const http = require('http') // 引入 htpp 模塊
const querystring = require('node:querystring') // 引入 node:querystring 模塊解析url

const server = http.createServer((req, res) => {
  console.log('method: ', req.method) // 打印請求方法,GET

  const url = req.url
  console.log('url: ', url) // 打印被訪問的url

  req.query = querystring.parse(url.split('?')[1]) // 通過 ? 問號 分隔參數,并使用 querystring.parse 解析問號后面的參數
  console.log('query: ', req.query) // 輸出參數
  res.end(JSON.stringify(req.query)) // 將參數返回給前端
})

server.listen(8000, () => {
  console.log('http://localhost:8000')
})

執行上面的代碼,并在瀏覽器訪問 http://localhost:8000/?msg=123&name=leihou

在瀏覽器會顯示出如下內容

 

解析:

  • req.url 可以獲取到當前訪問后端的 url 路徑
  • url.split('?')[1] 使用字符串的方法根據 ? 進行切割,然后獲取后面那段
  • 使用 querystring.parse 方法將參數轉換成對象的形式
  • res.end 將參數返回給前端。
  • 前端在瀏覽器地址欄輸入 http://localhost:8000/?msg=123&name=leihou 時,后端會把參數返回,前端在頁面中渲染出返回的參數。

POST

POST 請求會被 GET 更安全,同時也更麻煩。不能直接在瀏覽器地址欄輸入 url 請求。

你可以寫一段前端代碼,通過 ajax 的方式請求。但本文主要講解 Node.js ,所以我還是建議你使用 postman 發起 POST 請求。因為 postman 無需你處理跨域等問題。

 

const http = require('http')
const server = http.createServer((req, res) => {
  if (req.method === 'POST') {
    // 數據格式
    console.log('content-type', req.headers['content-type'])
    // 接收數據
    let postData = ''
    req.on('data', chunk => {
      postData += chunk.toString()
    })
    req.on('end', () => {
      console.log(postData)
      res.end('hello world') // 在這里返回,因為是異步
    })
  }
})

server.listen(8000 () => {
  console.log('http://localhost:8000')
})

和 GET 不同,POST 接收數據需要用 req.on('data') 進行接收,用 req.on('end') 處理接收數據完成的操作。

在 Node.js 里除了接收數據外,其他用法和 GET 有點像。

最后在 postman 訪問 http://localhost:8000 ,并在 Body 的 raw 里填寫 JSON 數據

 

按下 Send 鍵后,控制臺會輸出 postman 發送過來的數據。

綜合實例

如果理解了 GET 和 POST 請求的話,我們就可以嘗試將這兩個請求結合起來使用了。

const http = require('http')
const querystring = require('node:querystring')

const server = http.createServer((req, res) => {
  const method = req.method
  const url = req.url
  const path = url.split('?')[0]
  const query = querystring.parse(url.split('?')[1])

  // 設置返回格式 JSON
  res.setHeader('Content-type', 'Application/json') // 這里返回JSON。如果是 text/html 返回html

  // 返回的數據
  const resData = {
    method,
    url,
    path,
    query,
  }

  // 返回
  if (method === 'GET') {
    res.end(
      JSON.stringify(resData)
    )
  }
  if (method === 'POST') {
    let postData = ''
    req.on('data', chunk => {
      postData += chunk.toString()
    })
    req.on('end', () => {
      resData.postData = JSON.parse(postData)
      // 返回
      res.end(
        JSON.stringify(resData)
      )
    })
  }
})

server.listen(8000, () => {
  console.log('http://localhost:8000')
})

上面的代碼最主要是判斷 method 是 GET 還是 POST ,因為兩者接收數據的方式是不一樣的。

你可以運行上面的代碼,嘗試在瀏覽器和 postman 各發送一下 GET 和 POST 測試一下。

分享到:
標簽:node http
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定