簡體   English   中英

express.js針對CRUD的API端點最佳實踐

[英]express.js API Endpoint Best Practice for CRUD

我正在使用express.js構建REST API。

我的API需要提供所有端點才能對“用戶”執行CRUD,所以到目前為止,我有以下內容:

app.get('/users', getAllUsers); // get all users
app.post('/users', createUser); // create a new user
app.put('/users', updateUser); // update a user
app.delete('/users', deleteUser); // delete a user

但是,獲得單個用戶的最佳做法是什么呢?

因此,理想情況下,如果您在/users/1234上執行GET操作,我應該只返回ID為1234的User,但是如果我只是執行/users ,則應該返回所有用戶,因為未檢測到ID。

我該如何重構我的:

app.get('/users', getAllUsers);

處理這兩種情況?

您可以創建一個更高級別的路由器,然后在其上調用app.use() / router.use() 這是Express文檔中推薦的方法。

var express     = require('express');

var app         = express();
var usersRouter = express.Router();

usersRouter.get('/', function(req, res) {
    res.send('Got all users');
});

usersRouter.get('/:id', function(req, res) {
    res.send('Got user ' + req.params.id);
});

app.use('/users', usersRouter);

您不能,最佳實踐是盡可能地隔離您的路線操作。 那里只有一個ID,這種路由只能獲取該數據。 例。

var router = express.Router();
router.route('some/route/id/123').get(function(req,res){

console.log('id');
});
router.route('some/route/all').get(function(req,res){

console.log('all');
});

您可以通過提供id作為可選參數並在controller函數中進行檢查來實現

例如

app.get('/users/:id?', getAllUsers);

但我寧願遵循單一責任原則

app.get('/users', getAllUsers);
app.get('/users/:id', getUser);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM