Estoy tratando de configurar rutas para mi backend. Tengo dos formas en las que he intentado configurar estas rutas, y me pregunto cuál se ajusta a las mejores prácticas (¿o ninguna?). Las diferencias son mínimas, pero me encantaría saber si hay un "mejor" objetivo aquí.
Aquí están mis intentos:
const express = require("express"); const router = express.Router(); const flashcardController = require('../controllers/flashcardController'); router.get('/', flashcardController.readFlashcard); router.post('/', flashcardController.createFlashcard); router.patch('/', flashcardController.updateFlashcard); router.delete('/', flashcardController.deleteFlashcard); module.exports = routercontra
const express = require("express"); const router = express.Router(); const flashcardController = require('../controllers/flashcardController'); module.exports = (app) => { router.get('/api/flashcard', flashcardController.readFlashcard); router.post('/api/flashcard', flashcardController.createFlashcard); router.patch('/api/flashcard', flashcardController.updateFlashcard); router.delete('/api/flashcard', flashcardController.deleteFlashcard); app.use('/', router); };Por supuesto, mi archivo app.js (punto de entrada para mi backend) deberá codificarse de manera ligeramente diferente para cada una de estas opciones.
Si cree que el trabajo de un enrutador es solo manejar algunas solicitudes que recibe y es el trabajo del código de llamada colocar el enrutador en cualquier ruta en la que el código de llamada quiera que opere, entonces solo su primera opción servirá. que. Esto permitiría que una persona que llama use estas rutas en cualquier ruta que desee.
Si desea que el módulo que implementa las rutas sea completamente autosuficiente e instale las rutas en la ruta en la que quiere que estén, solo la segunda opción lo hace.
Diría que el esquema "usual" y más "flexible" es el primero donde el llamador coloca las rutas en el camino donde las quiere. Pero eres libre de elegir el estilo que quieras.
La segunda opción no se implementa de manera particularmente eficiente por lo que podría mejorarse. No se necesita ningún enrutador, ya que las rutas se pueden instalar directamente en el objeto de la app . Y se puede evitar repetir /api/flashcard varias veces.
Por ejemplo, la segunda opción podría ser esta:
const controller = require('../controllers/flashcardController'); const routePath = '/api/flashcard'; module.exports = (app) => { app.get(routePath, controller.readFlashcard); app.post(routePath, controller.createFlashcard); app.patch(routePath, controller.updateFlashcard); app.delete(routePath, controller.deleteFlashcard); };O incluso solo esto:
const controller = require('../controllers/flashcardController'); module.exports = (app) => { app.route('/api/flashcard') .get(controller.readFlashcard) .post(controller.createFlashcard) .patch(controller.updateFlashcard) .delete(controller.deleteFlashcard); };Y, el primero podría simplificarse a esto:
const router = require("express").Router(); const controller = require('../controllers/flashcardController'); router.route('/') .get(controller.readFlashcard) .post(controller.createFlashcard) .patch(controller.updateFlashcard) .delete(controller.deleteFlashcard); module.exports = router