Служба JAX-RS, клиент Axios и многозначные параметры POST?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Служба JAX-RS, клиент Axios и многозначные параметры POST?

Сообщение Anonymous »

У меня есть служба JAX-RS с операцией POST, которая принимает параметр Set. Параметр помечен @FormParam в определении службы. Я задокументировал службу с помощью OpenApi и использовал ее для создания клиента Typescript с помощью Axios через openapi-generator. Я вижу, что подпись клиентского API аналогична подписи API на стороне службы. Однако я наблюдаю неожиданное поведение при запуске теста с использованием клиента.
Я выполняю POST, используя 2 строковых значения, передаваемых как массив (согласно сгенерированному клиенту). Однако на стороне сервера я вижу, что значение передается как одиночная строка, разделенная запятыми. Он не разделяется JAX-RS и не обрабатывается как Set, как ожидалось. Это по-прежнему Set, но только с одним единственным значением.
Я также вижу аналогичное поведение, если мой Set имеет Java Enum код> значения. В этом случае Set имеет полное значение null. Он вообще не анализирует и не преобразует значения перечисления.
Я что-то упустил? Есть ли другой способ обработки параметров HTML-формы, которые могут иметь несколько значений?
РЕДАКТИРОВАТЬ: Чтобы собрать немного больше тестовых данных, я создал простой JAX-RS Client, вызвал ту же конечную точку и добавил ContainerRequestFilter в службу, чтобы я мог видеть, что передается в теле. При звонке своему клиенту я четко вижу тело с параметрами следующего вида:

Код: Выделить всё

[arrayParam=String1&arrayParam=String2&arrayParam=String3]
Благодаря этому формату моя служба может без проблем получить параметры в виде Set. Однако когда я звоню с помощью своего клиента Axios, я вижу тело с параметрами следующего вида:

Код: Выделить всё

[arrayParam=String1%2CString2%2CString3]
Итак, ясно, что клиент Axios помещает «,» между строковыми значениями, а не разбивает их на отдельные значения параметров. Мой вопрос: могу ли я каким-то образом изменить это поведение в клиенте Axios? Если не считать этого, есть ли простой способ компенсировать это в моем сервисе JAX-RS?

Подробнее здесь: https://stackoverflow.com/questions/783 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»