在 eXist-db 中返回客户端 API 请求的 xml 内容

Returning xml content on a client API request in eXist-db

在 eXist 4.7 中,我有一个简单的 API 端点作为 XQuery .xqm,它从客户端接收一个简短的 XML 文档(即 HTML 表单浏览器)。我目前只返回200或400的响应。例如,简化形式:

if (request:get-method()="POST")
    then
        let $eval := validate:my-api-doc(request:get-data())
        return 
                if ($eval/@status = "ok")
                then response:set-status-code(200)
                else response:set-status-code(400)

    else response:set-status-code(405)

我现在想开始将 XML(或其他可能的内容)发送回客户端。例如,如果用户正在创建一个包含必填 "title" 字段的文档,但他们提交的是空字段,我想将响应发送回客户端:

    <errors>
        <error element="title">Mandatory field.</error>
    </errors>

如何将此 XML 内容添加到 HTTP 响应中?我在 https://exist-db.org/exist/apps/fundocs/view.html?uri=http://exist-db.org/xquery/response 的文档中找不到相关的 eXist HTTP response 函数。

非常感谢。

要将 XML 内容添加到您的 HTTP 响应中,只需 return 将其内联,就像您 return XML 任何其他查询的内容一样:

return
    (
        response:set-status-code(405),
        <error>Oops!</error>
    )