当删除文档失败时,MarkLogic开箱即用的api返回了什么?

问题描述 投票:1回答:2

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

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

如果文档不存在,我期望404,如果已经删除,则期望410;如果我没有删除文档的授权,则期望403。

根据我的有限测试,如果文档不存在,我似乎得到204,如果我没有被授权,则得到400。

rest marklogic http-delete
2个回答
1
投票

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

也就是说,最新版本的REST API允许对文档删除请求进行检查。如果check设置为“exists”,则如果文档不存在,操作应该抛出错误。

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

希望有所帮助,


0
投票

您可以采用API优先方法并直接在MarkLogic上构建自己的优秀REST API,您可以使用XQRS完全控制URI路径以及响应代码和其他任何内容。

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>
  )
};
© www.soinside.com 2019 - 2024. All rights reserved.