Marklogic自定义Rest-API端点内容类型问题

时间:2017-01-25 16:23:25

标签: marklogic marklogic-8

我有一个自定义Rest扩展,WS同时具有GET和POST。我注意到自定义休息端点不接受Content-type:application/x-www-form-urlencoded。为什么会这样?如何允许我的自定义休息端点接受Content-type:application/x-www-form-urlencoded

而且开箱即用的搜索端点v1/search反之亦然,它不接受Content-type:multipart/form-data ..

我注意到的另一件事是,在我发送rs:start=1时,在自定义休息端点中,它将其视为xs:string ..但在开箱即用的端点start=1中,它会转换为{ {1}} ..我正在挖掘开箱即用的实际代码,无法找到隐式转换的位置。

3 个答案:

答案 0 :(得分:1)

资源服务扩展是内置服务的服务器端插件,它支持预定义的HTTP请求,并为您调解HTTP交互的内务管理。

如果您希望自定义端点完全控制HTTP交互,最好的方法是为同一内容数据库使用单独的应用程序服务器端口。

值可转换为整数这一事实并不能保证该值应转换为整数。应用程序可能需要字符串或双精度。

在自定义代码中,如果值是预期的,则将值设置为整数是微不足道的。

希望有帮助,

答案 1 :(得分:0)

关于参数类型,在安装REST扩展时,可以选择指定类型。见Installing a Resource Service Extension

答案 2 :(得分:0)

签出fpm + pleaserun: how-to use the .rpm or .deb generated。您可以创建通过XQRS批注接受application/x-www-form-urlencoded的RESTful服务。

您可以执行内容协商,使用%rest:form-param注释为功能设置约束。

支持

%rest:consumes / %rest:produces,包括多个文件上传以及multipart/form-data请求,这些请求会将您的数据转换为所需的MarkLogic / XQuery类型,无论它们是JSON,XML还是sem:triple *等等

该框架足够聪明,可以通过multipart/mixed将查询参数转换为所需的原子XDM类型。

该库是免费的,开源的并且经过了良好的测试。