Что возвращает Marki Logic из коробки rest api при сбое удаления документа? - PullRequest
1 голос
/ 07 марта 2019

В документации MarkLogic содержится информация для успешного ответа, но нет информации для неудачного удаления.

https://docs.marklogic.com/REST/DELETE/v1/documents

Я бы ожидал 404, если документ не существует,410, если он уже был удален, или 403, если у меня нет полномочий на удаление документа.

Из моего ограниченного тестирования кажется, что я получаю 204, если документ не существует, и 400если я не авторизован.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Некоторые специалисты REST утверждают, что запрос DELETE должен быть идемпотентным.До тех пор, пока документ не существует после завершения операции, операция будет выполнена успешно.

Тем не менее, последние версии REST API допускают параметр проверки в запросах на удаление документа.Если проверка установлена ​​на «существует», операция должна выдать ошибку, если документ не существует.

Попутно, я не вижу, как можно различить случаи 404 и 410, учитывая, что естьна сервере нет рабочего состояния.

Надеюсь, что поможет,

0 голосов
/ 07 марта 2019

Вы можете использовать подход, основанный на API, и создавать свои собственные великолепные API REST непосредственно в MarkLogic, где вы получаете полный контроль над URI Path, а также кодами ответов и всем остальным по этому вопросу с помощью XQRS .

declare
  %rest:DELETE
  %rest:path("/db/{$uri=.*}")
  %xdmp:update
function delete-doc($uri as xs:string) {
  if(fn:doc-available($uri)) then (
    xdmp:document-delete($uri),
    <rest:response>
      <http:response status="410" message="Gone"/>
    </rest:response>    
  )
  else (
    <rest:response>
      <http:response status="404" message="Not Found"/>
    </rest:response>
  )
};
...