Должен ли PUT-запрос быть совместимым с GET-ответом от того же ресурса - PullRequest
0 голосов
/ 16 марта 2019

Я рассматриваю ряд конечных точек, которые были разработаны на основе того, что будет сложным API.

Существуют ли рекомендованные отраслевые рекомендации, согласно которым вы должны убедиться, что ответ на запрос GET может использоваться в качестве полезной нагрузки для запроса PUT для того же ресурса.

Кроме того, я был бы признателен за отзывы о потенциальных подводных камнях, которые люди испытывали при таком подходе.

1 Ответ

1 голос
/ 16 марта 2019

Я бы сказал «это помогает», но это не обязательно.Поскольку согласование содержимого и несколько представлений - это одно, вы можете использовать другой тип носителя для «изменения» и «извлечения» состояния ресурса.

Если представление вашего запроса является простым подмножеством, возможно,PATCH - это то, что вы ищете.

Если ответ на запрос PUT содержит ETag, ожидается, что тело запроса PUT будет полностью соответствовать побайтнотекущее состояние.В действительности это редко имеет место, потому что API имеют тенденцию повторно сериализовать свою модель и часто будут иметь незначительные различия.

Наличие этого ETag полезно, потому что более умный клиент может прочитать этот ETag и использовать егочтобы подогреть их текущее кэшированное состояние ресурса, а также избежать условия гонки, если в будущем потребуется больше PUT, и клиент хочет использовать ETags, чтобы избежать проблемы потерянного обновления.

Для менялично мне нравится возможность GET ресурса, изменение единственного свойства PUT снова полный ресурс.

...