原创

JAX-RS サービス、Axios クライアント、および複数値の POST パラメータ?

温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

POSTパラメータを受け取る操作を行っております JAX-RS サービスがありますSet<String>パラメータには@FormParamサービス定義で釈が付けられます。 OpenApi を使用してサービスを文書化し、それを使用して、経由で Axios を使用して Typescript クライアントを生成しましたopenapi-generatorクライアント API の意思決定がサービス側 API と同様に一致していることがわかります。

(生成されたクライアントごとに)として渡されたPOST2つの値を使用するして実行します。ただし、サーバー側では、値がStringArrayシングル Stringそれはカンマ区切りです。 JAX-RSによって分割されず、Set<String>これは今後期待されるものとして扱われます。Set<String>が、値が 1 つだけ含まれています。

SetJava値の場合にも同様の動作が見られますEnumその場合、はSet完全にnullになります。enum解析値のや変換は全く行われません。

何かが足りないのでお願いしますか? 複数の値を持つ可能性があります HTML フォームがないを処理する別の方法はありますか?

編集:テスト少しデータを収集するために、単純な JAX-RS を作成してClient同じエンドポイントを呼び出し、ContainerRequestFilterサービスに追加して、本体に渡される質問を確認できます。クライアントと電話をかけると、次のような懸念を含む本文が明確に表示されます。

[arrayParam=String1&arrayParam=String2&arrayParam=String3]

Set<String>この形式を使用すると、サービスに問題はありませんパラメータを取得できます。ただし、Axios クライアントを使用して呼び出すと、次のような懸念を含む本文が表示されます。

[arrayParam=String1%2CString2%2CString3]

","したがって、Axios クライアントが String 値を別々のパラメータ値にする分解のではなく、String 値が存在します。挿入していることは明らかです。私の質問は、Axios クライアントでこの動作を適切な方法でオーバーライドできるかということです。それを防ぐなら、JAX-RS サービスでそれを補うきれいな方法はありますか?

正文到此结束
热门推荐
本文目录