mi pregunta es sobre el diseño de una API.
Estamos a punto de reconstruir toda nuestra infraestructura de back-end de API desde Meteor.JS hasta NodeJS/Express.
Aunque encontramos un problema relacionado con nuestra API. Solíamos tener Method.Call on Meteor y podíamos definir lo que queramos usando eso.
Ahora nos gustaría seguir algunos principios REST y, por lo tanto, nos gustaría usar solo GET/POST/PUT/DELETE y PATCH
//Ejemplo 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); } },//Mi función de parche actual
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); },El problema es que solo los usuarios con el rol de administrador pueden parchear un gameId, y otros usuarios solo pueden parchear una descripción.
Este es un objeto liviano, ya que el actual tiene alrededor de 20 propiedades para configurar.
Al usar PATCH, nos preguntábamos si era posible autorizar ciertos roles de usuario para poder editar solo ciertos campos. Y cómo podríamos hacer esto de una manera clara y fácil de entender.
Cualquier ayuda sería realmente genial. Si tiene alguna pregunta, no dude en preguntarme.