我的问题是关于API的设计。
我们即将重建从Meteor.JS到NodeJS / Express的整个API后端基础架构。
虽然我们发现了一个与我们的API有关的问题。 我们以前在Meteor上有Method.Call,可以使用它来定义我们想要的任何内容。
现在我们想遵循一些REST原则,因此我们只想使用GET / POST / PUT / DELETE和PATCH
//示例POST
createTournament: async(req, res) => {
if(!req.body || typeof req.body !== 'object'
|| !req.body.name || typeof req.body.name !== 'string'
|| !req.body.description || typeof req.body.description !== 'string'
|| !req.body.gameId || typeof req.body.gameId !== 'string')
{
return res.sendStatus(400);
}
const insertId = await (functions.createTournament(
req.body.name,
req.body.description,
req.body.gameId);
if (insertId) {
res.status(201).send(insertId);
} else {
res.sendStatus(404);
}
},
//我当前的补丁功能
patch: async(req, res) => {
if (!req.params
|| !req.params.id
|| !req.body) {
res.sendStatus(400);
}
const tournament = await functions.patchTournament(req.params.id, req.body);
res.status(200).send(tournament);
},
问题是只有具有admin角色的用户才能修补gameId,其他用户只能修改说明。
这是一个轻量级对象,因为实际的对象有大约20个要设置的属性。
在使用PATCH时,我们想知道是否可以授权某些用户角色只能编辑某些字段。 我们如何以清晰易懂的方式做到这一点。
任何帮助都会非常棒。如果您有任何问题,请随时问我。