問題タブ [javax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rest - Jersey と javax.rs - 別々のコンテンツ タイプを受け入れる
私の REST API では、以前はパス パラメーターからの入力を必要としなかった POST を取得しました。ただし、オプションのフォームパラメーターを受け入れることで拡張したいと考えています。@FormParam でこれを試してみましたが、(少なくとも) クライアントの 1 つがコンテンツ タイプ application/x-www-form-urlencoded を設定していないことがわかり、Jersey は次のエラーで失敗します。
@FormParam は、リクエスト エンティティのコンテンツ タイプが application/x-www-form-urlencoded でない場合に使用されます。
これを解決できますか?新しいクライアントがフォームで送信できるようにしたいのですが、古いクライアントが設定しているコンテンツ タイプは何でも受け入れます。
悪い解決策は、クエリ パラメータを使用することです。
編集:別の@Consumesで新しいリソースを追加しようとしました
と
私のテストでは、実際にフォームを送信すると機能します。セットのコンテンツ タイプを送信しないと、上記と同じエラーで失敗します。したがって、 thisWorks(..) リソースを選択しているようです。
Edit2:回避策を見つけました
これを唯一のリソースとして使用すると、コンテンツ タイプが設定されていない場合は formParam が null になり、フォームが設定されている場合はフォーム パラメータが含まれます。ドキュメントが台無しになる可能性がありますが、少なくとも機能します。