删除文档失败时开箱即用的 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 情况。
希望对您有所帮助,
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 情况。
希望对您有所帮助,