#node.js #express
#node.js #экспресс
Вопрос:
есть ли лучший способ префикса всех маршрутов с /something, чем этот?
app.use('/api/users', require('./routes/users'));
app.use('/api/books', require('./routes/books'));
app.use('/api/authors', require('./routes/authors'));
Это также будет работать при использовании маршрутов в моем server.js с помощью app.get()/post()/...
Ответ №1:
Если все ваши маршруты имеют префикс by /api
, я полагаю, вы могли бы использовать function .
function api(route) {
return `/api/${route}`;
}
app.use(api('users'), require('./routes/users'));
app.use(api('books'), require('./routes/books'));
app.use(api('authors'), require('./routes/authors'));
При этом /api
префикс может быть ненужным. Вы могли бы просто опустить его:
app.use('/users', require('./routes/users'));
app.use('/books', require('./routes/books'));
app.use('/authors', require('./routes/authors'));
Комментарии:
1. Допустим, у меня есть веб-сайт website.com и папка, которая содержит другой веб-сайт, что-то вроде проекта. Поэтому я бы website.com/project это позволило бы отобразить веб-сайт проекта и website.com/project/api — это был бы путь к API, с помощью которого я бы делал запросы.
Ответ №2:
Вам нужно добавить { mergeParams: true }
в дочерний маршрутизатор.
// app.js
import routes from './routes'
const API_PREFIX = '/api'
app.use(API_PREFIX, routes)
// routes.js
import { Router } from 'express'
import users from './users'
import books from './books'
import authors from './authors'
const router = Router({ mergeParams: true })
router.use(users)
router.use(books)
router.use(authors)
export default router