Передача данных JSON POST в Ignite 2.7 ComputeTask - PullRequest
0 голосов
/ 28 марта 2019

У меня сложный запрос API, который должен передать данные JSON в Ignite ComputeTask, но я могу только передать данные через строку запроса URL, что кажется неудобным и потенциально ограничивающим. У меня два вопроса:

  1. Имеет ли Ignite REST API максимальный лимит запросов GET, и если да, есть ли способ его увеличить?

  2. Есть ли способ передать данные JSON через запрос POST? Я экспериментировал с ConnectorMessageInterceptor, но параметр args - это просто значение p1 из строки запроса.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019
  1. Если вы согласны с передачей данных JSON в качестве параметра GET, вы можете установить максимальный размер GET в конфигурации вашего молота в конфигурации соединителя с помощью <Set name="requestHeaderSize">BYTES</Set>, хотя это явно не оптимальное решение.

  2. Короткий ответ - нет, нет встроенного способа перехвата данных тела JSON POST во встроенном REST API Ignite. Хотя документация Ignite предполагает, что вы настраиваете обработчики Jetty, реализация Jetty в Ignite 2.7 (см. GridJettyRestProtocol) фактически заменяет настроенный обработчик своим собственным GridJettyRestHandler, который принимает запросы только в форме / ignite? Cmd = cmdName & p1 = Титулы и имя = TASKNAME. Чтобы обойти это, вы можете сбросить lib ignite-rest-http и запустить свою собственную реализацию Jetty. Если это кажется слишком большой работой и не возражает против какого-то хакерского решения, вы можете воспользоваться дополнительной структурой lib в ignite и скопировать только файл org.apache.ignite.internal.processors.rest.protocols.http.jetty.GridJettyRestProtocol из lib ignite-rest-http, который Ignite автоматически выберет. при запуске. В GridJettyRestProtocol поменяйте GridJettyRestHandler на свой собственный AbstractHandler, который принимает данные POST. Не забудьте импортировать причал как проектную зависимость.

0 голосов
/ 29 марта 2019
  1. Вы можете указать свою собственную конфигурацию Jetty , которая, вероятно, позволит вам настроить ограничение GET-запроса.
  2. Вы действительно пытались выполнить POST с application/x-www-form-urlencoded внутри?
...