В настоящее время я работаю над SaaS для компаний, чтобы управлять их бизнес-данными (сотрудниками, счетами, заказами, продуктами, ...).Текущий дизайн API выглядит следующим образом:
GET /employees?limit=10&offset=0
GET /employees/ID
POST /employees
и т. Д. Для каждой модели.Кроме того, вы можете применить больше фильтров с параметрами запроса.
До сих пор я проверял, к какой компании принадлежит зарегистрированный аккаунт.Однако теперь я хочу, чтобы учетная запись могла быть «членом» в нескольких организациях.Например, если компания, использующая платформу, нанимает «эксперта», они должны иметь возможность предоставить доступ к его учетной записи (сделать его участником).
Вопрос: как мне реализовать это в дизайне API?Я придумал три решения, но на самом деле не знаю, какое из них является наилучшей практикой.
Решение 1:
GET /ORGANISATION-ID/employees?limit=10&offset=0
Решение 2:
GET /employees?limit=10&offset=0&organidationId=ORGANISATION-ID
Решение 3:
URI остается тем же, но заголовок установлен:
|----------------|------------------------|
| Header name | Value |
|----------------|------------------------|
| Authentication | Bearer TOKEN |
| Organisation | ID ORGANISATION-ID |
| ... | ... |
|----------------|------------------------|
Примечание : Заголовок Authentication
всегда установлен.
Лично я считаю, что решение номер 3 является наиболее элегантным, но я не уверен, неуместно ли использовать для этого заголовки.Я думаю, что решение 2 сбивает с толку, и решение 1 заставило бы все конечные точки начинаться с идентификатора организации, что не очень хорошо.