問題タブ [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.
jax-rs - JAX-RS でディスパッチはどのように制御されますか?
RESTeasy を使用して RESTful Web サービスを作成しています。これは JAX-RS の実装です。単一の @Path アノテーションでクラスまたはメソッドにアノテーションを付けます。正規表現は、パス パラメータを取得するために使用されます。例えば
「/foo」で始まり、「/bar」で終わり、その間にあるすべてのパターンに一致します。間にあるものはすべて、varname という名前のパラメーターに割り当てられます。
一部のフレームワーク (Django など) には、順番に試行される正規表現とメソッドのリストがあります。たとえば、/john/q/smith、/john/{.*}/smith、/john/{.*}/{.*} などです。「/john/henry/smith」は 2 番目と 3 番目に一致しますが、最初に見つかった一致であるため、2 番目がディスパッチされます。
これは JAX-RS で可能ですか、それともクラスとメソッドに固有の順序はありませんか? /john/{.*}/{.*} の場合、/john/anything/anythingbutsmith を意味する正規表現を作成する必要がありますか? 他のものを変更するたびに、それを変更する必要があります。
java - cxf.jaxrs: JAXRSServerFactoryBean 使用時の IllegalArgumentException
単体テストで JAXRS テスト サービスをセットアップするときに、次の問題が発生しました。これはコードです (AbstractJUnit4SpringContextTests から派生したテスト クラスから取得)。
XML テスト ファイルをサービスにフィードしています。CXF は不用意に xml を javax.xml.bind.JAXBElement にラップしようとし、サービスを呼び出し、(リフレクション API で) IllegalArgumentException で失敗します。サービスはもちろん JAX-RS 固有の要素を受け入れず、以前に XSD で定義した SearchRequest 要素。
ただし、次の行を春のコンテキストに挿入すると、すべて問題ありません。
他の誰かがこれを見ましたか?
jax-rs - JAX-RS インターフェースのマークアップと @Context インジェクション
次の単純な RESTEasy (JAX-RS) サービスについて考えてみましょう。
クラスではなくインターフェイスで JAXRS の仕様を定義したいので、素敵なクライアント フレームワークを使用できます。
RESTEasy のコンテキスト インジェクション (@Context) を導入したい場合を除いて、すべてがうまく機能します。単純に、次のことを検討してください。
この @Context インジェクションは直交しており、インターフェイスに属していないため、これは明らかに意味がありません (さらに、クライアントの観点からこのインターフェイスの醜さを乗り越えて null を渡すことができたとしても、現在、それを妨げるバグがあります)これは機能していません: RESTEASY-311 )
インターフェイス JAXRS マークアップを使用して (したがって、優れた RESTEasy クライアント フレームワークを活用して)、直交する @Context インジェクションに同時にアクセスするにはどうすればよいですか?
java - jersey Viewableおよびc:import tag lib
メソッドwitchを持つリソースクラスをGiverが返すと、Viewable(または一般的には任意のjspページ)が返されます。c:importまたはjsp:include taglibを使用して、jaxrs注釈付きクラスからのViewable応答を含める方法はありますか?たとえば、クラスが与えられた
計算されたhtmlをjsp内に含める方法はありますか?
または
rest - RESTおよびJAX-RSを介して親子エンティティをモデル化する方法
私はRESTベースのAPIに取り組んでおり、親子関係を表すための標準的な方法を理解するのに問題があります。(私はCXFでBeanを作成し、JAX-RSとJAXBを使用しています。CXFが提供する基本的な例から始めました)
私の問題は、あなたがフーとバーを持っているとしましょう。FooとBarには1-Nの関係があります。つまり、1Fooには多くのBarがあります。私の質問は、Fooが持っているバーを見つけるための標準的な方法は何ですか?そして、Fooが所有するBarリソースにアクセスするための標準的な方法は何ですか?
たとえば、Foosを次の場所にリストする可能性があることがわかりました。
GET http:// xxx / fooservice / foos
そして、次の場所で単一のfooを操作します。
PUT / UPDATE / DELETE http:// xxx / fooservice / foo / {fooid}
しかし、Foo 121が持っているバーをリストするにはどうすればよいですか?そして、どうすればそれらにアクセスできますか?デフォルトのJAXBマーシャラーは、Beanの属性だけをコレクションに出力しないように見えることに気づきました。したがって、Fooが次の場合:
JAXBは次のようなものを出力します。
<foo> <id> 123> / id> <name> foo name </ name> </foo><-bars属性がないことに注意してください
それが「ただ知っている」(私には悪いように思われる)場合を除いて、クライアントがFooにバーがあることを知ることを合理的に期待する方法がないため、これは問題があります。したがって、次を使用してバーのリストを取得することを想像できますが、
GET http:// xxx / fooservice / foo / 121 / bars
エンティティの出力がそれについて何も言わない場合、クライアントはどのようにしてFooにバーがあることを知るのですか?クライアントがリストを取得すると仮定すると、エンティティ操作は次のようになります。
GET / DELETE / UPDATE http:// xxx / fooservice / foo / 121 / bar / 435
Foo121が所有するBar435にアクセスします。
tomcat - JAX-RS リソースで ServletContext を取得する
Tomcatにデプロイして、JAX-RSをいじっています。基本的には次のとおりです。
ServletContext
JAX-RS リソース内でを取得する方法はありますか?
java - JAX-RSはエンティティをJAXBオブジェクトおよび文字列として取得します
リクエスト エンティティとして JAXB オブジェクトを受け入れる JAX-RS Web サービス (jersey を使用) があります。エラーが発生した場合、送信された元の xml 文字列をログに記録します。現在、私は JAXB オブジェクトを再マーシャリングしていますが、これらのクラスにはいくつかの Java 列挙型があるため、元の xml 文字列で正しく綴られていない列挙型の値が失われ、これは私たちの目的には受け入れられません。
リクエストエンティティを文字列と JABX オブジェクトの両方として取得する方法を知っている人はいますか? カスタム MessageBodyReader を作成したくないし、可能であれば JAXB の MessageBodyReader を取得しようとしないことを好みます。ジャージ固有のクラスも自由に使用できます。バージョン 1.0.x を使用しています。
java - RESTEasyクライアントフレームワーク認証クレデンシャル
RESTEasy(JAX-RS実装)には、次のような優れたクライアントフレームワークがあります。
このクライアントにHTTP認証資格情報をどのように提供しますか?
java - JAX-RS、マップオーバーヘッドなしでJSONに?
JAX-RSを使用してJavaでRESTfulWebサービスを作成しています。生成されたJSONで多くのオーバーヘッドが発生しています。
データクラス:
サービス:
生産:
私はそれを生産したいと思います:
これを達成するための最も簡単な方法は何ですか?データクラスを自由に再定義できますが、マップのキーやサイズを事前に知ることはできません。
java - JAXB を使用して JSON を Java クラスにマーシャリング/アンマーシャリングする
JAX-RS および JAXB アノテーションを使用して、POJO を JSON に正常にマーシャリングしています。
問題は、リクエストのマーシャリングを解除するために同じものを使用しようとすると、機能しないことです。ドキュメントで確認できる限り、JAX-RS は application/json 文字列を自動的にマーシャリングおよびアンマーシャリングして Java クラスに戻すことができます。
そのために独自の MessageBodyReader を作成する必要がありますか、またはこれは Jackson ライブラリを使用せずにフレームワークでサポートされていますか?