2016-11-29 4 views
1

Скажем, у меня есть несколько API, созданных как микро-службы. Один API, чтобы управлять пользователями (пользователь API) и выглядит следующим образом:Аналогичные конечные точки на нескольких API-интерфейсах

/users     GET, POST 
    /{id}    GET, PUT, DELETE 

Тогда существует другой API, который используется для управления информацией о безопасности (роли доступа, правами доступа и т.д.), и user создан в пользователе API может быть назначен group, который определен в API безопасности. Должна ли быть установлена ​​такая связь в микросервисе безопасности или в микросервисе пользователя?

Моя первоначальная мысль заключается в защищенном микросервисе, так как все приложения будут запрашивать информацию о безопасности. При этом, и что user может быть назначен только один group, я потом с конечной точкой:

/users/{id}/group  GET, POST, DELETE 

Но что конечная точка чувствует, как он относится более в микро-обслуживания пользователей. Другие конечные точки, которые являются опциями являются:

/groups/{id}/users  GET, POST, DELETE 
       /{id} GET, DELETE 

Но что тогда заставляет это казаться, что user может быть отнесен к нескольким группам. Тем не менее, я мог бы спроектировать его так, что когда user связан с group, он отключает его от group, с которым он ранее ассоциировался.

Что является лучшим вариантом, или есть лучший способ справиться с этими типами вызовов api, о которых я не знаю?

ответ

0

Я думаю, что нет «правильного» способа обязательно. Вот как я подхожу к нему.

основы:

Однако, я мог бы спроектировать так, что когда пользователь связан с группы, она разъединяет его из группы, что было ранее ассоциироваться.

/groups/{id}/users  GET, POST, DELETE 
       /{id} GET, DELETE 

Эта конечная точка может вызвать некоторые проблемы в том, что Id изменится, и поэтому вы должны изменить URL вы называете после того, как пользователь переключается на другую группу. Таким образом, последовательные вызовы должны перейти к новой конечной точке.

Например: /groups/1/users/1 может быть действительным только в один момент времени, но когда пользователь перемещается, группы /groups/1/users/1 больше не будет возвращать результат. Он теперь стал бы /groups/2/users/1

В то время как с:

/users/{id}/group  GET, POST, DELETE 

конечная точка не изменится, если пользователь переключает группы, которая держит его чище и яснее, на мой взгляд.Пользователь по-прежнему то же самое, и это ясно, что группа связана с этим пользователем, но это не имеет значения, что group идет речь, как всегда будет возвращать связанный group для user с этим id

Я думаю в нижней строке в том, что конечная точка должна отражать то, что вы пытаетесь достичь, если вы получаете группу для пользователя:

/users/{id}/group  GET, POST, DELETE 

или если вы получаете все пользователи для группы:

/groups/{id}/users  GET, POST, DELETE