繁体   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