Нужно ли создавать отдельный URL для регистрации «Компании» вместе с ее «Владельцем»?
Проблема такова - есть две модели User и Company. К ним подвязаны URL'ы .../api/users и .../api/companies/ соответственно. У одной компании много пользователей и один из них, по логике вещей, является ее владельцем (у пользователя есть ForeignKey company указывающий на компанию к которой он принадлежит, а так же атрибут role который говорит какую должность он там занимает). Требования таковы, что пользователь не может не принадлежать ни одной компании. Это решено с помощью эдпоинта .../companies//users/ с которого можно создавать пользователей которые сразу будут относиться к той или иной компании. Но компания тоже не может быть без владельца, а создавать бесхозных пользователей уже нельзя. Следовательно требуется создавать компанию и владельца этой компании одновременно, то есть при регистрации компании. И тут возникает вопрос - можно ли создавать пользователя вместе с компанией в запросе POST .../api/companies/ и просто через options просить присылать еще и данные пользователя, или вообще создавать отдельный URL под регистрацию этих двоих. Первый вариант, на мой взгляд, полностью ломает идею RESTful API, хотя я могу и ошибаться так как в REST'е я новичок, но идея, что эндпоинт, отвечающий за создание компаний , теперь в довесок берет на себя ответственность за создания пользователей меня коробит.
Если User связан с Company по форейн кею, то если Company не существует, то и юзера нет, значит когда мы шлем post на .../api/companies/ нам необходимо создать юзера, а значит первый вариант неплох. Правда это все разумно только, если у user'а нет возможности сменить компанию
Пользователи не могут менять компании. По сути тут есть два развития событий - либо вы владелец компании (получили свой свою уч. запись при регистрации компании), либо вы "сотрудник" компании и получили уч. запись через токен присланный главой какой либо компании.
kaato: Я к тому, что POST запрос на компанию подразумевает, что юзера нет, значит его нужно сделать. Если вы создадите отдельный url, POST для компании останется не используемым, поэтому первое решение создание юзера и компании на пост урле компании, кажется мне более разумным.