Ответ на идемпотентный HTTP запрос POST

Часть нашего УСПОКОИТЕЛЬНОГО API позволит пользователям регистрировать объект в порядковом номере. Поскольку порядковый номер не глобально уникален, он не может использоваться в качестве идентификатора ресурса, таким образом, мы будем использовать POST для родительского ресурса, который генерирует идентификатор, например.

POST /my/items

<item serial-number="ABCDEF" />

В случае, где объект уже не регистрируется, семантика HTTP четко определена. Мы возвращаем заголовок Местоположения и зарегистрированный объект как тело объекта, например.

HTTP 201 Created
Location: /my/items/1234    

<item id="1234" serial-number="ABCDEF" />

Однако в случае, где объект уже регистрируется, API должен быть идемпотентом и возвратить ранее зарегистрированный объект, не создавая новый. Мое лучшее предположение - то, что это должно затем возвратить 200 хорошо кодов состояния и использовать заголовок Довольного Местоположения для указания, куда объект на самом деле прибыл из, например.

HTTP 200 OK
Content-Location: /my/items/1234    

<item id="1234" serial-number="ABCDEF" />

Это казалось бы разумным? Я не совсем ясен, более ли Местоположение или Довольное Местоположение подходят во втором случае.

6
задан Greg Beech 11 August 2010 в 12:19
поделиться