Часть нашего УСПОКОИТЕЛЬНОГО 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" />
Это казалось бы разумным? Я не совсем ясен, более ли Местоположение или Довольное Местоположение подходят во втором случае.