Это факт.
Вы НЕ ДОЛЖНЫ отделять свой API на основе роли ваших клиентов!
По очень простой причине. В конечном итоге вы столкнетесь с дублированием кода, несоответствием и многими другими проблемами.
Если вы хотите провести какое-либо разделение, вам нужно подумать о бизнес-доменах и инкапсуляции.
Например:
- MyProject.ProductsApi
- MyProject.OrderingApi
- MyProject.PaymentApi
- et c.
Функциональность, которая предлагается пользователю вместо администратора, должна определяться и определяться на основе на клиентском доступе и разрешениях. Например, на основе токена аутентификации, который используется с запросом, API может определить, имеет ли этот пользователь доступ к этой функции или нет.
Однако в некоторых случаях вы хотите развернуть один и тот же API (один и тот же лог c и код) в нескольких местах. Например, если у вас есть ограничения на ресурсы, предоставляемые для обслуживания вашего API, и в пиковое время ваши клиенты будут вызывать медленный или недоступный API, вы можете не захотеть, чтобы ваш бэк-офис страдал от той же проблемы, и они всегда должны оставаться работоспособными. от того, что. Для этого вы делаете облачное развертывание и одно локальное развертывание.
Есть и другие факторы, такие как измерения безопасности, ограничение скорости, атаки, мониторинг и т. Д. c. которые должны управляться другими инструментами, а не путем разделения / дублирования кода API.