В моей службе REST у меня есть конечная точка POST /api/images
для добавления новых изображений. Но я не хочу добавлять одно и то же изображение несколько раз, поэтому после каждого вызова POST я вычисляю ха sh содержимого, чтобы проверить, существует ли оно уже в моей базе данных - если оно есть, тогда я не добавляю его еще раз, а просто возвращаю идентификатор ранее загруженного.
Как это вписывается в лучшую практику REST, где четко указывается, что после использования POST
должен быть создан новый ресурс? Обвиосулы это против, но я не вижу лучшей альтернативы здесь (*)
. Не уверен, стоит ли мне вообще беспокоиться, но я бы с удовольствием прочитал некоторые варианты по этому вопросу.
(*)
Альтернативой, которая, вероятно, удовлетворила бы всех REST-пуристов, было бы изменение цвета: при добавлении нового изображения я должен сначала вызовите GET /api/images
, чтобы выяснить, существует ли уже изображение с данным контентом, если да - верните его, в противном случае вызовите POST /api/images
, что всегда добавит новый ресурс. НО для этого потребуется 2 HTTP-вызова - стоит ли это того? Тем более, что мы отправляем довольно большие запросы (изображения).