return 文本 json 来自资源扩展

return text json from resource extension

我有一个资源扩展,我想 return json 作为对 GET 请求的响应。我有 JSON 作为文本,而不是 object 树。我以为我可以简单地在 $context 映射中设置 output-type,然后在文档节点中设置 return 文本,但似乎我的内容类型在响应 headers.

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"" }"
        }
};

如果我 return 文档节点中的 JSON object 树,即将文本包装在 xdmp:unquote 中,那么它 return 没问题.但是,我想做的是 return 直接 JSON 而不必解析它。我试图避免对我期望 JSON 的响应进行 XML 到 JSON 的转换。但是必须使用 xdmp:unparse 或 json:transform-to-json 会导致相同的额外时间,我正在努力避免这种情况。

我是否理解 output-type 属性的含义?

资源扩展的正确关键字是输出类型,因为您的扩展可以 return 多个文档。

http://docs.marklogic.com/guide/rest-dev/extensions#id_84661

转换的关键是输出类型。

希望对您有所帮助,