HTTP для удаления ресурса

DSTU для удаления REST — это простая отправка, DELETE [base]\[type]\[id].

Однако что, если на сервере реализованы обновления с учетом версии? Нужно ли также отправлять HTTP-заголовок Content-Location? Как в:

DELETE ...\Patient\123
Content-Location: ...\Patient\123\_history\4

Или DELETE неявно применяется к текущей версии ресурса?


person Richard Schneider    schedule 13.05.2014    source источник


Ответы (2)


Конечно, имеет смысл указать, какую версию вы собираетесь удалить, тем более что вы все еще можете обновить ресурс, чтобы «восстановить» его, поэтому мы говорим здесь о нескольких версиях. Однако определение заголовка Content-Location гласит:

Поле заголовка сущности Content-Location МОЖЕТ использоваться для предоставления местоположения ресурса для сущности, заключенной в сообщении.

а с помощью DELETE мы не кодируем объект. Вот я и спрашиваю, разрешено ли это. Однако стоит обсудить это на сайте HL7 FHIR и/или на gForge.

person Ewout Kramer    schedule 20.05.2014

Насколько я знаю, и как вы сказали в своем вопросе, FHIR не подразумевает операции удаления с учетом версии. На самом деле операция DELETE означает только то, что ваш ресурс не будет получен операциями SEARCH или READ. Тем не менее, учитывая, что ваш сервер выполняет нестандартную операцию, вы можете просто ответить на запрос DELETE к URL-адресу версии, удалив эту конкретную версию.

Позвольте мне сказать, что, ИМХО, изменение истории ресурса противоречит философии, согласно которой любое изменение должно быть отслежено. См. http://www.hl7.org/implement/standards/fhir/security.html#audit

person Origama    schedule 13.05.2014
comment
Извините, перечитывая ваш вопрос, я понимаю, что сначала я его неправильно понял. Как я теперь понимаю, я предполагаю, что вы просто хотите знать, должен ли запрос DELETE применяться к текущей версии ресурса. То, как мы реализовали это на нашем сервере, заключается в том, что у нас есть флаг Deleted в каждом ресурсе. Когда вы отправляете запрос DELETE на URL-адрес ресурса, сервер записывает новую версию ресурса с этим флагом, установленным в true, так что удаление является логической операцией, которая соответствует новой версии, записываемой на нижележащем уровне сохраняемости. - person Origama; 13.05.2014
comment
Спасибо @Origama, вы правы, меня интересует только точка зрения клиента. Разве клиенту не нужно включать версию (Content-Location) при удалении на сервер, который знает версию? - person Richard Schneider; 13.05.2014