我有一个资源扩展,我想返回json作为对GET请求的响应。我有JSON作为文本,而不是对象树。我以为我可以简单地在output-type
地图中设置$context
,然后在文档节点中返回文本,但似乎我的内容类型在响应标头中更改为text / plain。
xquery version "1.0-ml";
module namespace resource = "http://marklogic.com/rest-api/resource/json";
declare function get(
$context as map:map,
$params as map:map
) as document-node()*
{
let $output-type := map:put($context, "output-type", "application/json")
return
document {
"{ ""name"": ""tj"" }"
}
};
如果我在文档节点中返回一个JSON对象树,即将文本包装在xdmp:unquote
中,则返回正常。但是,我想要做的是返回直接的JSON,而不必解析它。我试图节省必须对我期待JSON的响应进行XML到JSON转换。但是必须使用xdmp:unparse或json:transform-to-json导致相同的额外时间,我试图避免。
我是否了解output-type
属性应该表示什么?
答案 0 :(得分:3)
资源扩展的正确密钥是输出类型,因为您的扩展可以返回多个文档。
http://docs.marklogic.com/guide/rest-dev/extensions#id_84661
转换的关键是输出类型。
希望有帮助,