Вариант использования
Я создаю интернет-магазин, где люди могут зарегистрироваться / войти в систему и приобрести (а затем управлять) своими лицензиями SaaS. Для этого я создал (среди прочего) следующие конечные точки REST:
// Lists all licenses which are linked to this user
r.Get("/users/{userID}/licenses", api.LicenseSvc.HandleGetLicenses())
// List details (such as purchase date, seat information, ...) for a given licenseID
r.Get("/users/{userID}/licenses/{licenseID}", api.LicenseSvc.HandleGetLicense())
// Creates a new license for the signed in user
r.Post("/users/{userID}/licenses", api.LicenseSvc.HandleCreateLicense())
// Each license has a limited number of seats. The license manager can free up seats to make room for others
r.Delete("/users/{userID}/licenses/{licenseID}/seats/{seatID}", api.LicenseSvc.HandleDeleteSeat())
Указанные выше конечные точки должны использоваться только в панели управления интернет-магазином / лицензиями. В то же время одна и та же служба должна обслуживать конечные точки для продуктов SaaS, которые фактически используют лицензии, которые пользователь создал / приобрел ранее. Для этого продукта SaaS требуются разные конечные точки, такие как:
- Конечная точка для проверки при запуске, является ли данная лицензия действительной для всех
- Конечная точка, которая также получает лицензию по идентификатору (см. Выше). ), но он должен возвращать только часть ресурса лицензии (например, он не должен возвращать дату покупки лицензии)
Мой вопрос
Из-за того, что я создаю один REST API, который используется двумя разными «аудиториями» (с одной стороны, менеджер лицензий / клиент, а с другой - программное обеспечение SaaS), я чувствую, что сталкиваюсь с конфликтами.
Аутентификация обеих аудиторий различна, обе аудитории хотят получить доступ к одному и тому же виду ресурса (например, лицензии), но «формат» ресурса (нет данных, чувствительных к клиенту для запрашивающей стороны SaaS) должен отличаться в зависимости от аудитория.
- Должно ли это отражаться в различных URL-адресах REST или я должен обрабатывать все эти логи c внутри моего маршрута e обработчики?
- Должен ли я даже создать два разных сервиса, обслуживающих эти разные аудитории? Как один API для панели пользователя / управления лицензиями и один для продуктов SaaS!?