将JSON POST数据传递给Ignite 2.7 ComputeTask

问题描述 投票:0回答:2

我有一个复杂的API请求需要将JSON数据传递给Ignite ComputeTask,但我似乎只能通过URL查询字符串传递数据,这看起来很尴尬,并且可能有限制。我有两个问题:

  1. Ignite REST API是否具有最大GET请求限制,如果有,是否有办法增加它?
  2. 有没有办法通过POST请求传递JSON数据?我已经尝试过ConnectorMessageInterceptor,但args参数只是查询字符串中p1的值。
json rest jetty ignite
2个回答
0
投票
  1. 如果您可以将JSON数据作为GET参数传递,则可以使用<Set name="requestHeaderSize">BYTES</Set>在连接器配置中设置jetty配置中的最大GET大小,但这显然不是最佳解决方案。
  2. 简短的回答是否定的,在Ignite的内置REST API中没有内置的方法来拦截JSON POST正文数据。尽管Ignite文档建议您配置Jetty的处理程序,但Ignite 2.7的Jetty实现(请参阅GridJettyRestProtocol)实际上会覆盖已配置的Handler及其自己的GridJettyRestHandler,它只接受/ ignite形式的请求?cmd = cmdName&p1 = params&name = taskName。要解决此问题,您可以删除ignite-rest-http lib并滚动自己的jetty实现。如果这似乎太多工作并且不介意有点hacky解决方案,你可以搭载点燃的可选lib结构,并从ignite-rest-http lib中复制文件org.apache.ignite.internal.processors.rest.protocols.http.jetty.GridJettyRestProtocol,Ignite将在启动时自动获取起来。在GridJettyRestProtocol交换GridJettyRestHandler为您自己的接受POST数据的自定义AbstractHandler。请记住将jetty导入为项目依赖项。

-1
投票
  1. 您可以提供your own Jetty config,这可能会让您配置GET请求限制。
  2. 你真的试过在里面用application/x-www-form-urlencoded做POST吗?
© www.soinside.com 2019 - 2024. All rights reserved.