Часть нашего RESTful API позволит пользователям зарегистрировать элемент с серийным номером.Поскольку серийный номер не является глобально уникальным, его нельзя использовать в качестве идентификатора ресурса, поэтому мы будем использовать POST для родительского ресурса, который сгенерирует идентификатор, например,
POST /my/items
<item serial-number="ABCDEF" />
В случае, когдаэлемент еще не зарегистрирован, семантика HTTP четко определена.Мы возвращаем заголовок Location и зарегистрированный элемент в качестве тела объекта, например
HTTP 201 Created
Location: /my/items/1234
<item id="1234" serial-number="ABCDEF" />
Однако в случае, когда элемент уже зарегистрирован, API должен быть идемпотентным и возвращать ранее зарегистрированный элемент без созданияновенький.Мое лучшее предположение состоит в том, что он должен затем вернуть код состояния 200 OK и использовать заголовок Content-Location, чтобы указать, откуда на самом деле пришел элемент, например,
HTTP 200 OK
Content-Location: /my/items/1234
<item id="1234" serial-number="ABCDEF" />
Было бы это разумным?Мне не совсем понятно, подходит ли Location или Content-Location во втором случае.