問題タブ [jax-rs]
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.
http - URL マトリックス パラメーターとクエリ パラメーター
URL でマトリックスまたはクエリ パラメータを使用するかどうか迷っています。そのトピックに対する古い議論が満足のいくものではないことがわかりました。
例
- クエリ パラメータを含む URL: http://some.where/thing?paramA=1¶mB=6542
- マトリックス パラメーターを含む URL: http://some.where/thing;paramA=1;paramB=6542
一見したところ、行列パラメーターには利点しかないように見えます。
- より読みやすい
- XML ドキュメントの「&」のエンコードとデコードは不要
- 「?」を含む URL 多くの場合、キャッシュされません。マトリックス パラメーターを含む URL はキャッシュされます
- 行列パラメータはパスのどこにでも表示でき、パスの最後に限定されません
- 行列パラメータは複数の値を持つことができます:
paramA=val1,val2
しかし、欠点もあります。
- JAX-RS のような少数のフレームワークのみが行列パラメーターをサポートしています
- ブラウザーが GET 経由でフォームを送信すると、パラメーターはクエリ パラメーターになります。したがって、同じタスクに対して 2 種類のパラメーターになります。REST サービスのユーザーを混乱させず、サービスの開発者の労力を制限するには、この領域で常にクエリ パラメータを使用する方が簡単です。
サービスの開発者はマトリックス パラメーターをサポートするフレームワークを選択できるため、ブラウザーが既定でクエリ パラメーターを作成するという唯一の欠点があります。
他にデメリットはありますか?あなたならどうしますか?
java - RESTful GUI アプリ向けの最先端の Java Web フレームワーク?
はい、知っています。最高の Web フレームワークについての古い質問ですが、説明させてください。
RESTful な対話を可能にし、Web GUI の構築にも適した Java Servlet ベースの Web フレームワークを探しています。
私が欲しいもの:
- http コンテンツ ネゴシエーションと適切な URL マッピングによる REST サポート
- リクエスト パラメータからドメイン オブジェクトへのデータ変換 (理想的には逆方向も)
- Webへのインターフェースとしてドメインオブジェクトを複製する必要はありません(ストラットのように)
- 簡単な EJB 統合
- 依存性注入は Java EE サーバーで実行する必要があります
- わかりやすいコード (Spring MVC のクラスパス内のコンポーネントのマジック ワイヤリングは好きではありません)
- 構成が簡単 (Spring で魔法のように構成されていないものは、コンテナーで構成するのが面倒です。直接の依存関係を好む場合もあります)
- たとえば、JPA や BeanValidation などを使用し、フレームワークによって再発明しないようにするか、少なくともこれらの標準を使いやすくする必要があります。
- フォームのエラー表示による検証サポート
- 国際化のサポート
候補者:
Spring MVCは強力ですが、Spring の構成にうんざりしていて、プログラミング モデルが好きではありません。これは少し抽象的で柔軟すぎるため、多くの構成が必要になると思います。そして、Spring MVC がアノテーションを使用する方法が好きではありません。しかし、出力パラメータを介して値を返すメソッドなど、いくつかの設計上の欠陥もあり
return
ます - 本当に醜いです! Spring MVC は Spring DI に大きく依存しているため、Java EE 依存性注入で Spring MVC を使用するのは簡単ではないと思います。Rooはクールに思えますが、Spring MVC アプリを作成する別の方法にすぎず、AOP でいくつか奇妙なことを行います。
Strutsはやや扱いにくく、時代遅れです。
Stripes ActionBean のアプローチは、Struts より優れているようには見えません。私はそれが気に入りません。
- Grailsは素晴らしいですが、バグがあります (少なくとも 1.2 より前)。車輪の再発明: たとえば、Gorm よりも JPA を好みます。
10 の最高の Java Web フレームワークも参照してください。
Wicket、Tapestry、JSF など、サーバー上で UI 状態を持つフレームワークを探しているわけではありません。このアプローチは、Web の基本原則に反していると思います。
じゃあ何をすればいいの?フレームワークをゼロから作成しますか? ふーむ ...
古典的なブラウザ GUI をサポートする JAX-RS のようなものが欲しいです。たとえば、フレームワークは検証をサポートし、検証エラーを再表示されたフォームに入れる必要があります。そのようなものはありますか?推奨事項はありますか?
java - JAX-RS にはデータ転送オブジェクト (DTO) が必要ですか?
JAX-RS アプリケーションのメソッドがドメイン オブジェクトを返す場合、表現 (JSON など) にはこのオブジェクトのすべての属性が含まれます。しかし、このオブジェクトに Web に公開すべきではない「プライベート」データが含まれている場合はどうなるでしょうか。
また、外部から内部への別の方向性についてはどうでしょうか: プライベート フィールドがオーバーライドされるのをどのように防ぐことができるでしょうか?
これに対する唯一の解決策は、データ転送オブジェクト (dto) を作成することです。
マップするフィールドを指定できない場合を除き、「 automapper 」を使用しても解決にはなりません。
では、JAX-RS は開発者に DTO の作成を強制するのでしょうか? それとも別の解決策がありますか?
java - JAX-RS 1.1 の最小サーブレット API バージョン
JAX-RS 1.1 (Jersey 1.1 など) を実行するために必要なサーブレット API の最小バージョンは?
java - JAX-RS アプリケーションをデプロイする方法は?
JAX-RS 1.1 仕様の 6 ページには次のように記載されています。
Application サブクラスが存在しない場合、追加するサーブレットには次の名前を付ける必要があります。
追加されたサーブレットとは何ですか? 任意のサーブレットでしょうか?
Application サブクラスが存在し、次の名前のサーブレット初期化パラメーターを持つ定義済みのサーブレットが既に存在する場合:
繰り返しますが、ここでの「サーブレット」とは何ですか?
既存のサーブレットによって処理されていない Application サブクラスが存在する場合、ContainerInitializer によって追加されるサーブレットは、Application サブクラスの完全修飾名で命名する必要があります。
「ContainerInitializer によって追加されたサーブレット」は、サーブレットが自動的に追加されるという意味ですか? 構成はどのようになりますか?
現時点では、Application クラスも web.xml も使用していませんが、(GlassFish 3.1 で) 動作します。この展開メカニズムには、大きなライブラリでは遅くなる可能性があるフル クラス パス スキャンが必要ですか?
サーブレットコンテナにデプロイする方法は?
Web には、紛らわしい数の構成オプションがあります。web.xml のコンテキスト パラメータでこの例を参照してください(私にはうまくいきません!)。JAX-RS アプリケーションをデプロイするための推奨される方法は何ですか?
java - CXF、JAX-RS、および HTTP キャッシングの使用方法
CXFのドキュメントでは、キャッシングはAdvanced HTTPとして言及されています。
CXF JAXRS は、If-Match、If-Modified-Since、および ETags ヘッダーを処理することにより、多数の高度な HTTP 機能のサポートを提供します。JAXRS リクエスト コンテキスト オブジェクトを使用して、前提条件を確認できます。Vary、CacheControl、Cookie、および Set-Cookie もサポートされています。
私はこれらの機能を使用する (または少なくとも調査する) ことに本当に興味があります。ただし、「サポートを提供する」というのは非常に興味深いように聞こえますが、そのような機能の実装には特に役立ちません。If-Modified-Since、CacheControl、または ETags の使用方法に関するヘルプまたはポインタはありますか?
web-services - JAX-RS Web サービスからマルチパート コンテンツを返すにはどうすればよいですか?
JAX-RS Web サービスから返される XML に HTML を埋め込むことは避けたいと考えていますが、単一の GET への応答で XML と HTML の両方を返すことができます。
これを行う方法はありますか?それは悪い考えですか?
現在、1 つの XML と 1 つの HTML の異なるリソースに対して 2 つの個別の GET を実行していますが、両方のリソースが常に一緒に取得されるため、これは無駄でエラーが発生しやすいようです。
java - JAX-RS は MVC フレームワークとして適していますか?
JAX-RS にはいくつかの MVC サポートがありますが、人間が使用する Web アプリケーションを構築するのに JAX-RS が本当に良い選択なのだろうかと思います。
ユーザーがフォームに間違った情報や不完全な情報を入力した場合、Grails や Wicket のように再度表示する必要があります。JAX-RS でこれを行う快適な方法はありますか?
私が知る限り、URI マッピングが正しく機能しないのは、必要なパラメーターがすべて指定されていないか、型変換の問題 (たとえば、Date など) がある場合です。あれは正しいですか?
国際化されたテンプレートはサポートされていますか?
以下は、単純な JAX-RS ベースの GUI アプリケーションの例です。しかし、それは本当に単純で、i18n や検証などは議論されていません。
json - JAXBオブジェクトのリストのJSONへのシリアル化をカスタマイズするにはどうすればよいですか?
私はJerseyを使用して、サーバーコンポーネント用のRESTWebサービスを作成しています。
リストでシリアル化したいJAXB注釈付きオブジェクトは次のようになります。
次のような1つのディストリビューションを取得するためのRESTリソースがあります。
また、すべてのディストリビューションのリストを取得するためのRESTリソースがあります。これは次のようになります。
ContextResolverを使用してJAXBシリアル化をカスタマイズします。これは、現在次のように構成されています。
両方のRESTリソースと、コンテキストリゾルバーが機能します。これは、最初のものの出力の例です。
それはまさに私が欲しいものです。これは、リストの出力例です。
これは私が望んでいることではありません。
distribution
なぜそこに囲みタグがあるのかわかりません。.rootUnwrapping(true)
コンテキストリゾルバーでそれを削除したかったのですが、どうやらそれは別の囲んでいるタグを削除するだけです。これは次の出力.rootUnwrapping(false)
です:
.arrays("distribution")
また、要素が1つしかない場合でも、常にJSON配列を取得するように構成する必要がありました。
理想的には、これを出力として使用したいと思います。
List<XMLDistribution>
、XMLDistributionList
(リストのラッパー)、、を返そうとしましたXMLDistribution[]
が、必要な形式でディストリビューションの単純なJSON配列を取得する方法が見つかりませんでした。
JSONConfiguration.natural()
、などによって返される他の表記法も試しましたがJSONConfiguration.mappedJettison()
、必要なものに似たものを取得できませんでした。
これを行うようにJAXBを構成できるかどうか誰かが知っていますか?
java - CXF、JAX-RS Webサービスでのリクエストとセッションに関する質問
CXF、JAX-RS、Spring を使用して Web サービスをセットアップしました。私は次の方法を持っています:
HttpRequest
内のオブジェクトにアクセスするにはどうすればよいmakePayload()
ですか?
このメソッドを呼び出すとセッションが生成されますか? もしそうなら、そのハンドルを取得できますか? そのセッションは、同じクライアントからの後続のすべてのリクエストに対して持続しますか?