Это нормально для POST / PUT структура, которая отличается от возвращенной? - PullRequest
0 голосов
/ 02 марта 2011

Я проектирую спокойный веб-сервис, и у меня есть проблема, которая, как я предполагаю, будет распространена.Допустим, у вас есть URL ресурса:

/ users

, и операция GET для этого URL возвращает список пользователей с основными сведениями.

Теперь я хочу создатьОперация POST для пользователей, но для создания пользователя мне нужно передать больше информации, чем возвращает / users и любой конкретный URL пользователя (users / 1 и т. Д.).Это нормально?Каков обычный подход к подобным ситуациям?

1 Ответ

2 голосов
/ 02 марта 2011

Я считаю, что в идеале представление о том, что вы POST создаете ресурс, совпадает с представлением, которое возвращается, когда вы получаете тот же ресурс.Однако, как и во всем, это не жесткое и быстрое правило.Например, если у вас есть свойство пользователя, такое как его «репутация», то ясно, что оно будет возвращено в GET, но не обязательно при создании для POST.Не могу придумать какие-либо свойства, которые вы должны были бы предоставить при создании, о которых вы бы не сообщили в GET.Вы можете обнаружить, что вам нужны разные представления в зависимости от того, кто запрашивает.Может быть, есть личная информация, которая возвращается по GET только по запросу владельца, и это информация, которую вы должны предоставить в POST при создании, но когда другой пользователь запрашивает ресурс, он не получает эту информацию.Я не думаю, что это навлечет на вас гнев Филдинга.

РЕДАКТИРОВАТЬ: иметь дело с паролями (не думал об этом, спасибо), то я не думаю, что было бы преступлением принять этона создание и не вернуть, что на GET.Если было бы уместно вернуть какой-нибудь заполнитель для пароля в представлении GET, чтобы клиент мог изменить пароль, заполнив его и отправив обратно то же представление.

...