На работе мы обсуждаем, как структурировать наши будущие API.На данный момент мы собираемся запустить API, содержащий различные конечные точки пользовательской информации, и хотя мы опубликуем его под URI, например: api.mycompany.com/userinfo
.Примеры конечных точек:
- api.mycompany.com / userinfo / users
- api.mycompany.com / userinfo / users / {id}
- api.mycompany.com / userinfo / api-docs <- документ Swagger для этого конкретного API будет находиться здесь </li>
Этот тип настройки позволил бы нам иметь server1.mycompany.com для размещения API и использоватьнаш балансировщик нагрузки / прокси для перенаправления трафика на api.mycompany.com/userinfo на server1.mycompany.com.Для нашего следующего API, работающего на server2.mycompany.com, у нас будет просто трафик пересылки балансировки нагрузки / прокси-сервера с api.company.com/transproduction на server2.mycompany.com, например:
- api.mycompany.com / транспорт / автомобили
- api.mycompany.com / транспорт / автомобили / {id}
- api.mycompany.com / транспорт / api-docs <- Swaggerдокумент для этого конкретного API будет находиться здесь </li>
Используя «userinfo» и «transport» в URI, у нас будет простой способ ссылаться на наши различные API в целом и простойспособ опубликовать Swagger UI вместе с фактическим API.
Моя проблема с этими URI заключается в том, что они не иерархические, а скорее как способ группировки конечных точек вместе.«Информация пользователя» также не является ресурсом, поэтому по сравнению с примерами API REST, которые обычно встречаются в сети, использование таких элементов, как «информация пользователя» и «транспорт» в пути, может не соответствовать рекомендациям.
этот дизайн нарушает какие-либо шаблоны проектирования REST API?Если да, то как бы вы предложили нам публиковать наши различные API-интерфейсы под одним fqdn (api.mycompany.com)?Или есть причины не использовать один fqdn для всех наших API?
Любой вклад будет принята с благодарностью.