Самый правильный способ иметь разные контексты с одинаковыми конечными точками API - PullRequest
0 голосов
/ 17 мая 2018

Я не знаю, достаточно ли ясен заголовок, но вот вся картина:

Мне нужно иметь одинаковые конечные точки API для доступа к данным для двух (и только *)1004 * два) разные компании (которые являются частью более крупной «материнской» компании).Затем они должны возвращать разные результаты.

Существует несколько вариантов дифференциации вызовов, сделанных клиентом:

  • Идентификация компании в URI, например, /companyA/users и /companyB/usersи т. д .;
  • Выполните вышеизложенное, но с использованием строки запроса, например /users?company=A;
  • Используйте пользовательский заголовок (?)

Мысли об этих параметрах(или любые другие идеи)?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я настоятельно рекомендую вам использовать параметр запроса. Пользовательские заголовки - плохая идея, потому что промежуточные серверы (прокси, кэши и т. Д.) Могут или не могут хранить их в запросах / ответах. Встраивание компании в URL крайне ограничено. Что происходит через 6 месяцев, когда требования меняются, и вам нужно одновременно получать пользователей из нескольких дочерних компаний? Добавить новую конечную точку?

Концептуально API предназначен для материнской компании, иначе в нем не будет данных нескольких дочерних компаний. Вы хотите отфильтровать пользователей родительской компании, которые работают в компании A или компании B. Для этого предназначен параметр запроса.

0 голосов
/ 17 мая 2018

Пользовательские заголовки, безусловно, не вариант, даже если некоторые плохо разработанные остальные API используют их.

Параметры запроса обычно предназначены для фильтрации коллекций на основе чего-либо, например, диапазона дат или чего-то подобного, но не грех использовать их для той цели, для которой вы хотите их использовать.

Но, несмотря на все сказанное, я бы использовал субресурсный подход, как вы показали в своем первом примере. Это более понятно, и клиентам не нужно выяснять, как вы называете параметры вашего запроса и сколько их. Вы просто хотите пользователей определенной компании. :)

...