Возвращает ли подмножество представления в ответе POST нарушение REST? - PullRequest
4 голосов
/ 14 января 2010

Если я размещаю новый ресурс с 100 полями, а сервер добавляет 3 собственных поля, таких как дата создания, статус и т. Д., То RESTful возвращает только мини-представление ресурса, которое включает только 3 новых поля в теле 201 СОЗДАННОГО ответа?

Затем клиент может просто добавить эти 3 новых поля в свое локальное представление. Я видел призывы к тому, что нужно всегда отправлять полное представление, но кажется, что трата пропускной способности возвращает все 103.

Ответы [ 3 ]

4 голосов
/ 17 января 2010

Объект ответа 201 (тело самого ответа) не должен быть или рассматривается любым http-клиентом как ресурс, который вы только что создали.

Это представление, которое описывает результат.

Если вы хотите, чтобы люди получили доступ к только что созданному ресурсу, они могут сделать это, отправив запрос на URI в заголовке Location, который возвращается с 201.

Если вы возвращаете тело сущности в своем 201, HTTP не считает его ресурсом, который вы только что создали, поэтому вы можете вернуть все, что захотите.

Важной вещью является тип носителя объекта, который вы возвращаете. Если клиенту известна эта сущность, будь то уменьшенная или полная версия сущности, они будут знать, что с ней делать. Если вы ожидаете, что клиент «узнает», что возвращаемый тип носителя для 201 является минимизированной версией, вы принудительно используете сильную связь с вашим собственным протоколом, что нарушает принципы ReST.

1 голос
/ 15 января 2010

От вас зависит, что вы ответите, хотя, возможно, стоит дать ссылку на дополнительную информацию о ресурсе. Если вы хотите стать действительно модным, вы можете указать микроформат

1 голос
/ 14 января 2010

Нет правил, которые утверждают, что вам нужно возвращать полный ответ в диссертации REST или HTTP RFC. Последний ( RFC 2616, версия HTTPbis ) имеет это, чтобы сказать о 201 статусе созданного кода:

Если ресурс был создан на исходном сервере, ответ ДОЛЖЕН быть 201 (Создан) и содержать объект, который описывает состояние запроса и ссылается на новый ресурс, и заголовок Location.

Возврат добавленной информации - разумная и полностью RESTful HTTP-совместимая идея.

...