删除文档失败时开箱即用的 MarkLogic 会休息 api return 什么?

What does the MarkLogic out of the box rest api return when deleting a document fails?

MarkLogic 文档提供了成功响应的信息,但没有提供失败删除的信息。

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

如果文档不存在,我会收到 404,如果文档已被删除,我会收到 410,如果我无权删除该文档,我会收到 403。

从我的有限测试来看,如果文档不存在,我似乎会得到一个 204,如果我没有被授权,我会得到一个 400。

您可以采用 API 优先的方法,直接在 MarkLogic 上构建您自己的优秀 REST APIs,您可以在其中完全控制 URI 路径以及响应代码和任何其他内容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>
  )
};

一些 REST 从业者断言 DELETE 请求应该是幂等的。只要操作完成后文档不存在,操作就成功了。

也就是说,最新版本的 REST API 允许对文档删除请求使用检查参数。如果检查设置为 "exists," 如果文档不存在,操作应该抛出错误。

顺便说一句,鉴于服务器上没有运行状态,我看不出如何区分 404 和 410 情况。

希望对您有所帮助,