Это очень самоуверенный вопрос, поэтому ни один ответ не будет полным или единой точкой правды. Я пишу это, потому что информации слишком много, чтобы поместиться в разделе комментариев, и я думаю, что мог бы дать вам несколько хороших рекомендаций, чтобы принять лучшее решение для вас.
Я также буду express своего собственного мнения, поэтому вы должны иметь это в виду.
При этом, прежде всего, я вижу, что вы используете . NET -Core и C#, который описывает один из вариантов, которые у вас есть. Поскольку, по крайней мере, ASP. NET MVC 3 , у нас есть возможность использовать областей , что, я думаю, даст вам поведение, которое вы хотите, используя. NET вроде говорить. Вы можете прочитать о областях в. NET Core здесь и вот короткая цитата:
Рассмотрите возможность использования областей в проекте, когда:
- Приложение состоит из нескольких функциональных компонентов высокого уровня, которые могут быть логически разделены.
- Вы хотите разделить приложение так, чтобы каждая функциональная область могла работать независимо.
Итак, плюсы таковы:
- Вы получаете из коробки маршрутизацию в виде / admin / accounts /...
- В будущем, если вам понадобится добавить дополнительные функции администратора, вы можете легко разделить их, что сделает ваш код чище и проще в обслуживании
Однако я лично не большой поклонник этого подходить. Сначала это кажется немного искусственным для меня. Обычно у вас получается дублированный код на 95% и небольшие корректировки, и в конце очень сомнительно, что дополнительный код, который вам нужно поддерживать, оправдывает преимущества, которые вы получаете от этого дополнительного разделения.
Возможно, области жизнеспособные варианты в конце концов, но только если у вас есть достаточно много функций, которые вы можете заключить в него, чтобы получить реальную выгоду.
Заключение : Вы можете, и если вы решите прибегнуть к решению / admin / accounts /... Я советую вам рассмотреть вопрос об использовании района, но лично я бы не стал go.
Второй вариант Вы не можете слишком усложнять проект и просто предоставить несколько дополнительных маршрутов для удовлетворения ваших конкретных c потребностей. Проблем с этим несколько, я обрисую их в общих чертах:
- Очень часто исключение становится нормой. Теперь вам нужна дополнительная функциональность для администраторов, через некоторое время вам понадобится что-то для менеджеров ..
- Ваши идентификаторы ресурсов станут очень непоследовательными, и хотя это не очень профессионально, я думаю, что это будет несколько уродливо иметь такие маршруты в вашем приложении.
Событие, хотя вы не обязаны делать свои сервисы RESTful, было бы полезно, если вы будете следовать некоторым ограничениям, которые применяются REST.
Во-первых, запрос должен быть без сохранения состояния:
Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для понимания запроса
В другом По словам всех тех логик c, которые вы описываете в своем вопросе, запрос должен содержать данные, которые понадобятся серверу для возврата правильного ответа. В более практическом плане я говорю о чем-то вроде JWT , где вы можете Claims передать эту дополнительную информацию о пользователе, чтобы сервер мог получить вам правильные данные.
Второй, Унифицированный интерфейс :
REST определяется четырьмя интерфейсными ограничениями: идентификация ресурсов; манипулирование ресурсами через представления; информативные сообщения; и гипермедиа как двигатель состояния приложения.
В вашем случае, я думаю, это самое важное ограничение идентификация ресурсов Чтобы получить нужный ресурс, вам на самом деле не нужна административная часть, это часть бизнес логики c вашего Приложение, которое может видеть всю информацию, необходимую серверу для получения правильных данных, должно быть внутри запроса, а не URI.
Заключение : Я думаю, что вам следует расширить свой запрос с некоторыми дополнительными данными, чтобы позволить серверу выполнить бизнес-логику c и сохранить маршруты такими, как они есть сейчас.
HOWEVER Как вы можете видеть, такие вещи, как области, существуют и люди в Microsoft гораздо лучше, чем я, и вы - разработчики API, поэтому здесь нет чёрно-белого ответа.
Надеюсь, по крайней мере, мне удалось дать вам пищу для размышлений.