最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodeJS?express路由學(xué)習(xí)req.body與req.query方法實例詳解

 更新時間:2022年09月26日 15:15:00   作者:冰鎮(zhèn)生鮮  
這篇文章主要為大家介紹了nodeJS?express路由學(xué)習(xí)req.body與req.query方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

所謂 路由 就是根據(jù)不同的 url 地址展示不同的內(nèi)容或頁面

形象點 舉個栗子??:

電話的撥號界面咱們都見過都使用過

你輸入一串號碼,就可以撥號給指定的聯(lián)系人

路由也是這個道理,你請求不同的 url 地址,服務(wù)器給你展示不同的內(nèi)容或頁面。

假如我們有一臺提供 Web 服務(wù)的服務(wù)器的網(wǎng)絡(luò)地址是192.168.1.66:8080 然后我們的服務(wù)器下掛載有如下一個資源

192.168.1.66:8080/home.html 假設(shè)這個url是訪問網(wǎng)站主頁

192.168.1.66:8080/about.html 假設(shè)這個url是訪問內(nèi)容詳情

192.168.1.66:8080/person.html 假設(shè)這個url是訪問個人主頁

那么這個時候,你只要在瀏覽器地址欄輸入不同地址,就可以路由到不同頁面

路由發(fā)展到今天 可以分為前端路由和后端路由 該內(nèi)容了解即可

前端路由

隨著前后端分離的web開發(fā)模式出現(xiàn),前端出現(xiàn)SPA單頁面應(yīng)用,這個SPA單頁面應(yīng)用就需要用路由進行頁面內(nèi)容切換。

在 HTML5 的 history API 出現(xiàn)之前,前端的路由都是通過 hash 來實現(xiàn)的,hash 能兼容低版本的瀏覽器。

這種路由規(guī)則中需要帶上 #。服務(wù)器并不會解析 hash,也就是說 # 后的內(nèi)容 Web 服務(wù)都會自動忽略,但是 JavaScript 是可以通過 window.location.hash 讀取到的,讀取到路徑加以解析之后就可以響應(yīng)不同路徑的邏輯處理。

而history 是 HTML5 才有的新 API,可以用來操作瀏覽器的 session history。

也就是說,前端路由有兩種實現(xiàn)方式:

hash

history

學(xué)過VUE的童鞋應(yīng)該非常熟悉路由,特別是vue-router

后端路由

這個就沒什么好說的了,以前沒有前后端分離,全是后端路由主導(dǎo)。

無論是jsp,php,還是asp····這些 用戶能通過URL訪問到的頁面,大多是通過后端路由匹配之后再返回給瀏覽器的。瀏覽器在地址欄中切換不同的URL時,每次都向后臺服務(wù)器發(fā)出請求,服務(wù)器響應(yīng)請求,在后臺拼接html文件返回給前端,并且每次切換頁面時,瀏覽器都會刷新頁面。

當(dāng)然現(xiàn)在的后端路由比較偏向后臺網(wǎng)絡(luò)接口這些,供前端發(fā)起Ajax請求拿數(shù)據(jù)。

Express路由教學(xué)

在 Express 中,路由指的是客戶端的請求與服務(wù)器處理函數(shù)之間的映射關(guān)系。

一個Express路由長這樣:

express實例對象.請求方法("請求路徑",處理函數(shù)(請求對象req,響應(yīng)對象res))

參數(shù)解析:

  • express實例對象 來自 const app = new express(); 這個app就是實例對象
  • 請求方法 常見的有 GET、POST
  • 請求路徑 相對路徑就好 比如 /home
  • 處理函數(shù)就是我們熟知的http內(nèi)置模塊那些

上一張黑馬的圖 形象展示 路由匹配過程(黑馬yyds??)

GET/POST路由演示

const express = require('express')
const app = express()
// 這是一個get路由 地址:http://192.168.123.53:80/myget 需用get請求
app.get('/myget', (req,res) => {
    console.log(req.query)
    console.log("這是get路由,你好 router")
})
// 這是一個post路由 地址:http://192.168.123.53:80/mypost 需用post請求
app.post('/mypost', (req,res) => {
    console.log(req.query)
    console.log("這是post路由,你好 router")
})
app.listen(80, () => {
    console.log('express server running at http://192.168.123.53:80/form.html ')
})

為了更加直觀的看到這兩個路由,我們寫個前端頁面,簡單的form表單,方便發(fā)起post和get請求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>form表單 方便post get</title>
</head>
<body>
    <form method="get" action="http://192.168.123.53:80/myget">
        姓名:<input type="text" name="name">
        <input type="submit" value="get提交表單">
    </form>
<hr>
    <form method="post" action="http://192.168.123.53:80/mypost">
        愛好<input type="text" name="hobby">
        <input type="submit" value="post提交表單">
    </form>
</body>
</html>

并且在之前的nodeJS代碼中添加一行代碼,將html頁面掛載到服務(wù)器下

// 掛載靜態(tài)資源,使之同源不跨域,方便測試
app.use(express.static('public'))

運行效果:

可以看到,服務(wù)器路由成功路由到了不同的url請求,

但是這里似乎出現(xiàn)了一個小小的bug

······

詳解req處理數(shù)據(jù)的方法

我們的post路由在req處理前端發(fā)來的數(shù)據(jù)時,無法用req.query獲取前端發(fā)送來的數(shù)據(jù)

因為提交數(shù)據(jù)的鍵值對在請求的body中,默認(rèn)是underfined

要解決這個問題很簡單

首先我們要知道,express提供有如下幾個方法,用于處理前端請求 發(fā)來數(shù)據(jù)

1,req.body 極佳的選擇,但需要導(dǎo)入第三方body-parse模塊才可使用

2,req.query 常用于get

3,req.params 常用于post

4,req.param 已經(jīng)不被express官方推薦使用了

這里只講 1 和 2

req.query

首先 query用于get請求

舉個常見的get請求 http://127.0.0.1:8080/myget?id=2&name=binbin

那么通過query可以得到?后面的鍵值對參數(shù),

讓我們回顧一下前面的代碼就可以形象理解了:

req.body

而我們post請求提交數(shù)據(jù)的鍵值對是在請求的body中,且默認(rèn)是underfined,

你可以用body-parser或者multer來解析

但是解析body不是nodejs默認(rèn)提供的,你需要載入body-parser中間件才可以使用req.body;

話不多,直接上操作:

npm install body-parser
//對body-parser進行配置
const bodyParser = require('body-parser');
//設(shè)置完畢之后,會在req對象上面新增一個req.body的一個對象
app.use( bodyParser.urlencoded({extended: true}) )

有了以上兩步小操作,從此隨心所欲的用req.body操作post數(shù)據(jù)

上終極版后臺代碼,完美無bug:

const express = require('express')
const app = express()
//對body-parser進行配置
const bodyParser = require('body-parser');
//設(shè)置完畢之后,會在req對象上面新增一個req.body的一個對象
app.use( bodyParser.urlencoded({extended: true}) )
// 掛載靜態(tài)資源,使之同源不跨域,方便測試
app.use(express.static('public'))
// 這是一個get路由 地址:http://192.168.123.53:80/myget 需用get請求
app.get('/myget', (req,res) => {
    console.log(req.query)
    console.log("這是get路由,你好 router")
})
// 這是一個post路由 地址:http://192.168.123.53:80/mypost 需用post請求
app.post('/mypost', (req,res) => {
    console.log(req.body)
    console.log("這是post路由,你好 router")
})
app.listen(80, () => {
    console.log('express server running at http://192.168.123.53:80/form.html ')
})

以上就是nodeJS express路由學(xué)習(xí)req.body與req.query方法實例詳解的詳細內(nèi)容,更多關(guān)于nodeJS express路由方法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • nodejs實現(xiàn)bigpipe異步加載頁面方案

    nodejs實現(xiàn)bigpipe異步加載頁面方案

    本文給大家分享的是使用nodejs結(jié)合bigpipe實現(xiàn)異步加載頁面的方案,非常的實用,也是以后前端性能優(yōu)化的一個方向,希望大家能夠喜歡。
    2016-01-01
  • 預(yù)防NodeJS命令注入的方法詳解

    預(yù)防NodeJS命令注入的方法詳解

    Node.js和npm為前端生態(tài)中提供了統(tǒng)一的開發(fā)語言、強大的包管理和模塊生態(tài)系統(tǒng)、靈活的構(gòu)建工具和任務(wù)自動化、以及豐富的前端框架和庫等等,本文給大家介紹了如何預(yù)防NodeJS命令注入,文中有詳細的代碼講解,需要的朋友可以參考下
    2023-12-12
  • 詳解Nodejs之npm&package.json

    詳解Nodejs之npm&package.json

    本篇文章主要介紹了詳解Nodejs之npm&package.json,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • node.js中的fs.renameSync方法使用說明

    node.js中的fs.renameSync方法使用說明

    這篇文章主要介紹了node.js中的fs.renameSync方法使用說明,本文介紹了fs.renameSync的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 如何在 Node.js 中使用 axios 配置代理并實現(xiàn)圖片并發(fā)下載

    如何在 Node.js 中使用 axios 配置代理并實現(xiàn)圖片并發(fā)下載

    這篇文章主要介紹了如何在Node.js中使用axios配置代理并實現(xiàn)圖片并發(fā)下載,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Node.js基礎(chǔ)入門之回調(diào)函數(shù)及異步與同步詳解

    Node.js基礎(chǔ)入門之回調(diào)函數(shù)及異步與同步詳解

    Node.js是一個基于Chrome?V8引擎的JavaScript運行時。類似于Java中的JRE,.Net中的CLR。本文將詳細為大家介紹Node.js中的回調(diào)函數(shù)及異步與同步,感興趣的可以了解一下
    2022-03-03
  • node.js-path模塊你了解多少

    node.js-path模塊你了解多少

    這篇文章主要為大家詳細介紹了node.js-path模塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 使用Node.js實現(xiàn)簡易MVC框架的方法

    使用Node.js實現(xiàn)簡易MVC框架的方法

    下面小編就為大家?guī)硪黄褂肗ode.js實現(xiàn)簡易MVC框架的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解Node.js中單線程限制的有效解決方法

    詳解Node.js中單線程限制的有效解決方法

    Node.js?是一個基于事件驅(qū)動、非阻塞?I/O?模型的?JavaScript?運行時環(huán)境,特別適合構(gòu)建高并發(fā)的網(wǎng)絡(luò)應(yīng)用,本文介紹了幾種解決?Node.js單線程限制的方法,希望對大家有所幫助
    2024-12-12
  • Nodejs如何搭建Web服務(wù)器

    Nodejs如何搭建Web服務(wù)器

    這篇文章主要介紹了Nodejs如何搭建Web服務(wù)器,本文教大家使用 Nodejs搭建一個簡單的Web服務(wù)器,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論

寻甸| 安顺市| 长兴县| 连江县| 克东县| 如皋市| 商都县| 陇川县| 孝感市| 临城县| 襄城县| 山阳县| 武宁县| 南江县| 拜泉县| 潞城市| 兰考县| 东方市| 武功县| 正镶白旗| 红河县| 唐山市| 崇左市| 油尖旺区| 武汉市| 兴宁市| 哈巴河县| 唐海县| 天水市| 兰考县| 义乌市| 达州市| 东兴市| 旌德县| 五寨县| 治多县| 安乡县| 通海县| 丰县| 西贡区| 望江县|