nodejs使用Express框架寫后端接口的全過程
在寫接口前,我們要明白什么是接口,在前端我們叫接口,而后端就叫路由,這其實是指同一個東西。
路由和接口
路由(Routing)是由一個URL(或者叫路徑標(biāo)識)和一個特定的HTTP方法(GET、POST等)組成的,涉及到應(yīng)用如何處理響應(yīng)客戶端請求。每一個路由都可以有一個或多個處理器函數(shù),當(dāng)匹配到路由時,這些個函數(shù)將被執(zhí)行。
// 引入express const express = require('express') //創(chuàng)建express實例存入變量app ,調(diào)用express const app = express() // 定義路由 //METHOD:是一個http請求方法;PATH:請求路徑;HANDLER:是當(dāng)路由匹配到時需要執(zhí)行的處理函數(shù) app.METHOD(PATH, HANDLER)
接口傳參
我們使用ajax請求向服務(wù)器接口傳參,按http協(xié)議的規(guī)定,每個都有三個部分:
- 請求行:保存了請求方式,地址,可以以查詢字符串的格式附加一部分?jǐn)?shù)據(jù)。
- 請求頭:它可以附加很多信息,其中content-type用來約定請求體中保存的數(shù)據(jù)格式。
content-type常見有三種取值:
- 請求體:本次請求攜帶的參數(shù)。至于這些參數(shù)到了后端應(yīng)該如何解析出來,由請求頭中的
content-type
來決定。
GET接口
express
框架會自動幫我們收集get類型的接口從url地址中傳遞的查詢字符串參數(shù),并自動保存在req對象的query屬性中,我們直接獲取即可。
app.get('/get',(req,res) => { // 輸出請求參數(shù) console.log(req.query) //結(jié)束本次響應(yīng)并返回內(nèi)容 res.send('hello world!') })
POST接口-普通鍵值對
具體來說當(dāng)請求頭的content-type
為x-www-form-urlencoded時,表示上傳的普通簡單鍵值對 。
// 使用中間件獲取普通鍵值對參數(shù) app.use(express.urlencoded()) app.post('/add',(req,res) => { // 輸出請求參數(shù) //app.use(....)之后,在res中就會多出一個屬性res.body,里面存放著鍵值對參數(shù) console.log(req.body) //結(jié)束本次響應(yīng)并返回內(nèi)容 res.send("hello world!") })
POST接口-JSON
在post傳遞參數(shù)時,如果要傳入的參數(shù)比較復(fù)雜(多級嵌套),例如表單數(shù)據(jù),則可以使用json格式上傳。
// 使用中間件獲取JSON參數(shù) app.use(express.json()) app.post('/post-json',(req,res) => { // 輸出請求參數(shù) console.log(req.body) //結(jié)束本次響應(yīng)并返回內(nèi)容 res.send("hello world!") })
POST接口-form-data文件上傳
如果post涉及文件上傳操作,則需要在服務(wù)器端額外使用第三方multer
這個包(不屬于express)來獲取上傳的信息。
// 引入包 const multer = require('multer') // 配置 上傳的文件會保存到unloads這個文件夾下 const upload = multer({dest:'unloads/'}) //upload.single表示單文件上傳,cover表示本次上傳的數(shù)據(jù) app.post('/post-file',upload.single('cover'),(req,res) => { // req.file記錄了上傳文件的信息 console.log(req.file) //結(jié)束本次響應(yīng)并返回內(nèi)容 res.send({message:"ok"}) })
- 如果當(dāng)前目錄下沒有uploads,它會自動創(chuàng)建uploads這個文件夾
upload.single
只是處理了文件的上傳。你仍可以通過req.body來獲取其它參數(shù)
總結(jié)
到此這篇關(guān)于nodejs使用Express框架寫后端接口的文章就介紹到這了,更多相關(guān)nodejs Express后端接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js中的fs.realpathSync方法使用說明
這篇文章主要介紹了node.js中的fs.realpathSync方法使用說明,本文介紹了fs.realpathSync的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實例
這篇文章主要介紹了Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實例,本文給出了利用子進程調(diào)用系統(tǒng)命令、執(zhí)行系統(tǒng)命令、調(diào)用傳參數(shù)的shell腳本、調(diào)用python腳本的例子,需要的朋友可以參考下2015-01-01Ajax獲取node服務(wù)器數(shù)據(jù)的完整步驟
這篇文章主要給大家介紹了關(guān)于Ajax獲取node服務(wù)器數(shù)據(jù)的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09nodejs使用redis作為緩存介質(zhì)實現(xiàn)的封裝緩存類示例
這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實現(xiàn)的封裝緩存類,涉及nodejs操作redis進行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2018-02-02Node.js中的EventEmitter類使用小結(jié)
EventEmitter 是 Node.js 中的一個核心模塊,它提供了一種實現(xiàn)事件驅(qū)動編程的機制,它是一個基于觀察者模式的類,用于在應(yīng)用程序中處理事件和觸發(fā)事件,這篇文章主要介紹了Node.js中的EventEmitter類介紹,需要的朋友可以參考下2023-12-12node.js中的querystring.escape方法使用說明
這篇文章主要介紹了node.js中的querystring.escape方法使用說明,本文介紹了querystring.escape的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12