MarkLogic REST扩展GET接口自定义输出Header及Content-Type失效问题
解决MarkLogic REST资源自定义Content-Type及响应头无效问题
核心问题出在代码拼写错误,导致响应头无法被正确识别,同时Content-Type设置也未按预期生效。
错误点分析
- 响应头参数拼写错误:
"ouput-headers"应为"output-headers"(缺失字母t) - 重复设置
output-type和content-type,MarkLogic REST资源中优先通过output-type控制响应Content-Type,无需重复设置
修正后的XQuery代码
xquery version "1.0-ml"; module namespace he.test = "http://marklogic.com/rest-api/resource/he.test"; declare function he.test:get($context as map:map,$params as map:map) as document-node() { let $doc := doc('/LS/MEDIA/test') let $_ := map:put($context, "output-type", 'image/jpeg') let $_ := map:put($context, "output-headers", ("Marc", "value1", "marc2", "value2")) return $doc };
额外注意事项
- 确保
/LS/MEDIA/test对应的文档是JPEG二进制内容,若为XML/JSON文档,强制设置image/jpeg可能导致浏览器解析异常 - 若返回二进制数据,建议将函数返回类型改为
xs:base64Binary或binary(),配合output-type设置更贴合二进制资源返回场景
内容的提问来源于stack exchange,提问作者Marc Messéant
相关产品推荐
相关产品推荐

