У меня есть следующие маршруты для бэкэнда ...
admin.js
router.get('/contents', ...); // GET /admin/contents
router.get('/:adminID', ...); // GET /admin/[adminID]
router.put('/:adminID', ...); // PUT /admin/[adminID]
router.get('/', ...); // GET /admin
router.post('/', ...); // POST /admin
.. но при тестировании следующее:
PUT /admin/contents
запускает маршрут PUT /admin/[adminID]
. Но «содержимое» не является идентификатором. Я понимаю, почему это происходит (т.е. это вписывается в шаблон), но я не уверен, что лучшее / общее решение для этого? В идеале я хотел бы, чтобы он признал, что «содержимое» не является идентификатором, а фактически просто пытается использовать недоступную конечную точку.
Я мог бы использовать что-то вроде ...
router.use('/contents', require('./admin-contents'));
но я бы предпочел ограничить каждую конечную точку верхнего уровня одним файлом, а не распределять его по очень многим.
В худшем случае, он будет искать администратора с идентификатором: "content" и вернет "admin not found", но я бы предпочел, чтобы он возвратил 404, потому что это не является доступной конечной точкой для /admin
.
Редактировать # 1
Для пояснения, adminID
- это комбинация букв и цифр, причем любая из них встречается в любой позиции в строке. Регулярное выражение не будет работать.
Кроме того, единственный маршрут для /admin/contents
- это GET
. Необходимость реализации пустых маршрутов для всех других методов (PUT
, PATCH
, DELETE
и т. Д.) Также не идеальна.