iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Modern Web

用Node.js建立專屬於你的API吧系列 第 15

Day15 - Router 講解

  • 分享至 

  • xImage
  •  

前情提要

在我們寫 API 時,並不是所有的資源都要寫在同一個檔案裡面,開發時如果都把所有東西寫在一起會導致後面維護的不易,畢竟全部塞在一起程式碼一定會很長,出什麼問題就要一行一行找,十分痛苦,因此今天要來分享的是如何利用 Express 提供的方法,Router(),把需要的東西分類寫在不同的檔案中,需要時再合併,來達成我們要的目的。

Router教學

  1. 在原先專案創立新的 JS 檔,我這邊是叫做 routerStarsign.js

  2. routerStarsign.js 中導入和建立需要的東西。

const express = require('express');
const router = express.Router();
  1. 利用 router 填寫 get(),並且輸出出去。
router.get('/', (req, res) => {
    res.send('My star sign is Cancer');
});

module.exports = router;
  1. main.js 裡面引進 routerStarsign.jsrouter,並且使用 app.use() 串接起來。
const routerStarsign = require('./routerStarsign');
app.use('/starsign', routerStarsign);
  1. 在你的 terminal 執行後在原先的網址後面加 /starsign 即可看到內容。

程式碼講解

以上我們利用了 Express 中的 Router(),成功的把設置在其他 JS 檔中的東西連接過來,而其中的 app.use() 需要特別講解。他其中一個功用是連接其他的中介軟體,而裡面要填的參數有兩個,一個是路徑,另一個是引進的變數,其中路徑的部分是重點,這裡面填的路徑會是你引進變數的起始路徑。以下附程式碼講解:

//routerStarsign.js
router.get('/', (req, res) => {
    res.send('My star sign is Cancer');
});

//main.js
app.use('/starsign', routerStarsign);

//router 全部結果會顯示在 http://localhost:3000/starsign

假如 app.use() 中填的路徑為 /starsign,本身 get() 填的路徑為起始路徑,則全部用 router 寫的方法都會是顯示在 http://localhost:3000/starsign 這個路徑上,而非 http://localhost:3000/ 上。

//routerStarsign.js
router.get('/starsign', (req, res) => {
    res.send('My star sign is Cancer');
});

//main.js
app.use('/', routerStarsign);

//只有這個 get() 的結果會顯示在 http://localhost:3000/starsign

假如 app.use() 中填的路徑為起始路徑,本身 get() 填的是 /starsign,則只有這個 get() 的結果會顯示在 http://localhost:3000/starsign 這個路徑上,其他都是在 http://localhost:3000/ 上。

//routerStarsign.js
router.get('/cancer', (req, res) => {
    res.send('My star sign is Cancer');
});

//main.js
app.use('/starsign', routerStarsign);

//只有這個 get() 的結果會顯示在 http://localhost:3000/starsign/cancer,其他用 router 寫的會顯示在 http://localhost:3000/starsign

假如 app.use() 中填的路徑為 /starsign,本身 get() 填的是 /cancer,則只有這個 get() 的結果會顯示在 http://localhost:3000/starsign/cancer 這個路徑上,其他用 router 寫的會顯示在 http://localhost:3000/starsign 上。

以上舉例可知,app.use() 填的路徑會是引進變數的起始路徑,無論使用哪種 HTTP Method,只要有填寫其他路徑,都是在 app.use() 填寫的路徑上疊加上去。


上一篇
Day14 - 中介軟體介紹
下一篇
Day16 - MongoDB Atlas 帳號建立
系列文
用Node.js建立專屬於你的API吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言