iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 9
0
Modern Web

30天Vue出Google SSO系列 第 12

Day 12. B2E-第一支API

https://ithelp.ithome.com.tw/upload/images/20200903/20118686CS5wHCqjhx.jpg

今天進度預計目標是要建立第一支API - 登入

因為還沒用到跟資料庫,所以先使用假資料做比對的動作

真的是很會用各種假資料阿xD


#API開發

第一次都是最困難的,因為會遇到各式各樣的狀況,所以今天建立第一支API特別的重要!!
換句話說,就是今天內容都沒問題的話,之後就可以大絕招的意思xD

#Step 1

規劃 登入 路徑會是這樣: /api/users/signin

  • api: 代表這個路徑是用來做 API 串接的
  • users: 指的是對 user 系列做存取,因為日後有可能會有其他的系列
    例如: 商品可能就是 /api/products 之類的
  • signin: 代表要做登入的動作,是一個功能型API

註: 這個專案幾乎都是用「功能型」的API,例如:登入、登出、驗證登入狀態

#Step 2

規劃好之後,開始做我們的第一層 - /api
開啟 /app.js ,預設已經寫好了一些程式碼,將其作一些修改:

  • 引用users刪除
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users'); //這行不需要可以刪除
  • index路徑改為 /api,另外引用usersRouter的部份也刪除
app.use('/api', indexRouter); //路徑改為 /api
app.use('/users', usersRouter); //這行不需要可以刪除

第一層就完成了~

#Step 3

接著是第二層 - /users
/routes 資料夾裡面先建立一個 users 資料夾,裡面放 index.js,結構像這樣:

routes
├── index.js
└── users
    └── index.js

放index的原因是,在引用時,只需要引用到 users 資料夾就好,程式會自動抓到資料夾底下的 index.js 檔,就不需要寫到下一層,可以省下微小的打字時間

/users/index.js 檔案內容放這些:

var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
  res.send('users首頁');
});

module.exports = router;

#Step 4

開啟 /routes/index.js ,引用剛才建立好的 users:

//引用的部份寫到users就可以了
var users = require('./users');

接著設定路由:

router.use('/users', users);

做到這邊可以檢查一下是不是有設定成功
網址輸入: http://localhost:3000/api/users

如果頁面回覆 users首頁 代表成功囉!!

可以嘗試看看輸入其他的網址
會回覆 404 Not Found
因為在沒有設定路徑的狀態下,程式很聰明的幫你檔掉了~

#Step 5

接著是第三層 - /signin
開啟 /routes/users/index.js,加上 signin 路由:

router.post('/signin', (req, res) => {
  res.send('signin頁');
});

注意開啟的是哪一個路徑的index,怕混淆我都會把完整路徑寫上

注意這裡用的是POST方法,用GET方法的話帳號密碼資訊就被看光光了~

測試時,使用萬能POST工具- POSTMAN
如圖看到 signin頁 代表發送請求成功得到回覆囉!!
https://ithelp.ithome.com.tw/upload/images/20200903/20118686TRYnyrgLwn.jpg

#Step 6

路由都建立好之後,接著會用到兩種檔案:

  • controller: 負責做資料傳遞及回覆
  • module: 負責處理資料

controller 開始,先來建立資料夾以及 users 對應的 users.controller.js 檔,結構長這樣:

controllers
└── users.controller.js

內容的部份,建立一個 controller ,接收請求(req)並回傳(res)結果:

const userCtrlSignin = (req, res) => {
    res.send('signin頁');
};

註: req=request , res=response

最後 exports 出去:

module.exports = {
    userCtrlSignin
}

#Step 7

回到 /routes/users/index.js
引用 users.controller.js 檔:

var userCtrl = require('../../controllers/users.controller');

路由設定改成這樣:

router.post('/signin', userCtrl.userCtrlSignin);

controller 的部分就完成了~
可以用POSTMAN來測試看看結果,看見 signin頁 代表成功!!


今日重點:

  • /api/users/signin 路徑可分析為:
    • /api: 用途是API介接資料
    • /users: 要介接 users 系列的資料
    • /signin: 處理登入功能
  • 介接API必備工具 - POSTMAN
  • controller 負責資料傳遞及回覆
  • module 負責處理資料

可惡看來今天做不完xD

有需要改進或是任何意見建議歡迎下面留言~


上一篇
Day 11. B2E-建立專案
下一篇
Day 13. B2E-還是第一支API
系列文
30天Vue出Google SSO30

尚未有邦友留言

立即登入留言