在 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>
)
在 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>
)