Стратегия организации конечных точек в приложении SPA - PullRequest
1 голос
/ 05 августа 2020

Мне нужна стратегия по организации URL-адресов.

В нашем приложении около 150 URL-адресов. Некоторые из них довольно простые, без каких-либо параметров маршрута. В то время как другие часто содержат более одного параметра маршрута. Например, это может быть так

  1. api/School/Class
  2. api/School/1/Class/2/Student
  3. api/School/Class/revaluate

Итак, в первом у одного нет параметра, у второго - два параметра, и, наконец, у третьего - 1, но последняя часть - это не ресурс, а действие. поскольку поддержание URL-адресов было бы техническим кошмаром. Я надеялся, что у нас может быть один файл api.js или несколько файлов, например api/School.js, api/Teacher.js, для хранения файлов.

1 Ответ

0 голосов
/ 05 августа 2020

В express вы называете это маршрутизатором.

const express = require('express');
const app = express();
const schoolRouter = require('./routers/school');

//...

app.use('/api/school', schoolRouter); // Forwards any requests to the schoolrouter

//...

School. js:

// The router works just like express app (which is also a router)
const schools = require('express').Router();

// we used example.com/api/schools/something to get here
// but the router only cares about what comes next
schools.get('/', function(req, res, next) {
  // res.send()
});
    
// Get a single school (etc, you get the point)
schools.get('/:schoolId', function(req, res, next) {
  let id = req.params.schoolId;
  // get data from server and res.send()
});

//...


module.exports = schools;

И вы можете объединять маршрутизаторы в цепочку, но потому что у вас есть только частичный маршрут, параметры могут быть потеряны. Поэтому обычно параметры сохраняются в объекте req.

schools.use('/:schoolId/classes', function(req, res, next) {
  req.schoolId = req.params.schoolId;
  next()
}, classesRouter);

Таким образом, мы можем получить доступ к req.schoolId в любое время дальше по цепочке.

...