タグ付けされた質問 「jax-rs」

JAX-RS:RESTful Webサービス用のJava API。これは、RESTアーキテクチャスタイルに従ってWebサービスの作成をサポートするAPIです。

2
JAX-RSおよびJerseyを使用したRESTトークンベースの認証のベストプラクティス
ジャージーでトークンベースの認証を有効にする方法を探しています。特定のフレームワークを使用しないようにしています。それは可能ですか? 私の計画は、ユーザーがWebサービスにサインアップし、Webサービスがトークンを生成してクライアントに送信し、クライアントがそれを保持することです。次に、クライアントは、要求ごとに、ユーザー名とパスワードの代わりにトークンを送信します。 リクエストごとにカスタムフィルターを使用する@PreAuthorize("hasRole('ROLE')") ことを考えていましたが、これにより、データベースへの多くのリクエストにより、トークンが有効であるかどうかが確認されると思いました。 または、フィルターを作成せず、各リクエストにparamトークンを入れますか?そのため、各APIはまずトークンをチェックし、その後、リソースを取得するために何かを実行します。

13
@QueryParamと@PathParamを使用する場合
私はすでにここで質問されている質問をしていません: @PathParamと@QueryParamの違いは何ですか これは「ベストプラクティス」または規則の質問です。 するときは、使用する@PathParam対@QueryParam。 その決定は、情報パターンを区別するために2つを使用することであると考えることができます。私のLTPOを以下に説明します-完全ではありません。 PathParamの使用は、情報ツリーのブランチにうまく分類される情報カテゴリに予約できます。PathParamを使用して、エンティティクラス階層にドリルダウンできます。 一方、QueryParamは、クラスのインスタンスを見つけるための属性を指定するために予約できます。 例えば、 /Vehicle/Car?registration=123 /House/Colonial?region=newengland /category?instance @GET @Path("/employee/{dept}") Patient getEmployee(@PathParam("dept")Long dept, @QueryParam("id")Long id) ; 対 /category/instance @GET @Path("/employee/{dept}/{id}") Patient getEmployee(@PathParam("dept")Long dept, @PathParam("id")Long id) ; 対 ?category+instance @GET @Path("/employee") Patient getEmployee(@QueryParam("dept")Long dept, @QueryParam("id")Long id) ; それを行うための標準的な慣習はないと思います。ある?しかし、私が上で例示したように、人々がどのようにPathParamとQueryParamを使用して彼らの情報を区別するかについて聞きたいです。練習の理由も聞きたいです。
276 java  rest  jax-rs 

4
無効なデータのREST応答コード
以下のシナリオの場合、クライアントにどの応答コードを渡す必要がありますか? 間違ったメール形式のようにユーザー登録中に無効なデータが渡されました ユーザー名/メールアドレスは既に存在します 403を選びました。また、使用できると感じたのもわかりました。 ウィキペディア: 412前提条件が失敗しました:サーバーは、要求者が要求に入力した前提条件の1つを満たしていません 403以外を使用する必要がある場合は、コードを提案してください。
272 http  rest  jax-rs 

14
JAX-RS — JSONとHTTPステータスコードを一緒に返す方法は?
REST Webアプリ(NetBeans 6.9、JAX-RS、TopLink Essentials)を書いていて、JSON および HTTPステータスコードを返そうとしています。HTTP GETメソッドがクライアントから呼び出されたときにJSONを返すコードの準備ができて機能しています。基本的に: @Path("get/id") @GET @Produces("application/json") public M_機械 getMachineToUpdate(@PathParam("id") String id) { // some code to return JSON ... return myJson; } しかし、JSONデータと共にHTTPステータスコード(500、200、204など)も返したいと思います。 私が使用しようとしましたHttpServletResponse: response.sendError("error message", 500); しかし、これによりブラウザはそれを「本物の」500であると考え、出力Webページは通常のHTTP 500エラーページでした。 HTTPステータスコードを返して、クライアント側のJavaScriptがそれに依存するロジックを処理できるようにします(たとえば、HTMLページにエラーコードとメッセージを表示します)。これは可能ですか、またはHTTPステータスコードをそのようなものに使用しないでください。

11
JAX-RS / Jerseyエラー処理をカスタマイズする方法は?
Jerseyを使用してJAX-RS(別名、JSR-311)を学習しています。ルートリソースを正常に作成し、パラメーターをいじっています。 @Path("/hello") public class HelloWorldResource { @GET @Produces("text/html") public String get( @QueryParam("name") String name, @QueryParam("birthDate") Date birthDate) { // Return a greeting with the name and age } } これはうまく機能し、Date(String)コンストラクターによって理解される現在のロケールのすべての形式を処理します(YYYY / mm / ddおよびmm / dd / YYYYなど)。しかし、無効な値または理解できない値を指定すると、404応答が返されます。 例えば: GET /hello?name=Mark&birthDate=X 404 Not Found この動作をカスタマイズするにはどうすればよいですか?おそらく異なる応答コード(おそらく「400 Bad Request」)でしょうか?エラーの記録についてはどうですか?トラブルシューティングに役立つように、カスタムヘッダーに問題の説明(「不正な日付形式」)を追加することはできますか?または、5xxステータスコードとともに詳細を含むエラー応答全体を返しますか?

3
URLマトリックスパラメーターとクエリパラメーター
私のURLでマトリックスまたはクエリパラメーターを使用するかどうか疑問に思っています。そのトピックについての古い議論は満足のいくものではなかった。 例 クエリパラメータを含む URL:http://some.where/thing?paramA = 1&paramB = 6542 マトリックスパラメータを含む URL:http://some.where/thing; paramA = 1; paramB = 6542 一見すると、マトリックスparamsには利点しかないようです。 より読みやすい XMLドキュメントでの「&」のエンコードとデコードは不要 「?」を含むURL 多くの場合、キャッシュされません。行列パラメーターを持つURLがキャッシュされます 行列パラメータはパスのどこにでも出現でき、その終わりに限定されません 行列パラメーターは複数の値を持つことができます: paramA=val1,val2 ただし、欠点もあります。 JAX-RSのような少数のフレームワークのみがマトリックスパラメーターをサポートします ブラウザがGETを介してフォームを送信すると、パラメータはクエリパラメータになります。そのため、同じタスクに対して2種類のパラメーターになります。RESTサービスのユーザーを混乱させず、サービスの開発者の労力を制限しないために、この領域では、常にクエリパラメーターを使用する方が簡単です。 サービスの開発者はマトリックスパラメータをサポートするフレームワークを選択できるため、唯一の欠点は、ブラウザがデフォルトでクエリパラメータを作成することです。 他に欠点はありますか?あなたならどうしますか?
176 http  url  rest  parameters  jax-rs 

4
JAX-RSとSpring Restの違い
JAX-RS(まあ、おそらくJAX-RSは仕様なので、ジャージーを使用して比較する必要がある)とSpring for Restful servicesの違いと混同しました。オンラインでより多くの情報を検索しようとすると、さらに混乱します。私の会社はSpring MVCを使用してRestful APIを開発しています 混乱する部分は、JAX-RSはRESTful WebサービスのJava APIを表し、Spring ではJavaを使用してRESTful Webサービスを開発しているため、実際には違いがわかりません。SpringはJAX-RS仕様に準拠していますか? 私が知っていることから今まで: JAX-RSは設計図/仕様であり、実装としてJersey、RESTeasyなどがあります。

14
Java 8 LocalDate Jackson形式
以下のためにjava.util.Date私が行うとき @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy") private Date dateOfBirth; 次に、JSONリクエストで送信する { {"dateOfBirth":"01/01/2000"} } できます。 どうすればいいですか Java 8のLocalDateフィールドか? 持ってみました @JsonDeserialize(using = LocalDateDeserializer.class) @JsonSerialize(using = LocalDateSerializer.class) private LocalDate dateOfBirth; うまくいきませんでした。 誰かがこれを行うための正しい方法を教えてください。 以下は依存関係です <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>jaxrs-api</artifactId> <version>3.0.9.Final</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>com.wordnik</groupId> <artifactId>swagger-annotations</artifactId> <version>1.3.10</version> </dependency>
138 java  json  jackson  jax-rs  resteasy 

12
START_OBJECTトークン外のjava.util.ArrayListのインスタンスをデシリアライズできません
ListカスタムオブジェクトをPOSTしようとしています。リクエスト本文のJSONは次のとおりです。 { "collection": [ { "name": "Test order1", "detail": "ahk ks" }, { "name": "Test order2", "detail": "Fisteku" } ] } リクエストを処理するサーバー側コード: import java.util.Collection; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path(value = "/rest/corder") public class COrderRestService { @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response postOrder(Collection<COrder> orders) …

1
RESTful POSTメソッドでパラメーターにアクセスする方法
私のPOSTメソッドは次のようになります。 @POST @Consumes({"application/json"}) @Path("create/") public void create(String param1, String param2){ System.out.println("param1 = " + param1); System.out.println("param2 = " + param2); } NetbeansでJersey Clientを作成すると、postメソッドを呼び出すメソッドは次のようになります。 public void create(Object requestEntity){ webResource.path("create").type(MediaType.APPLICATION_JSON).post(requestEntity); } このテストを実行するとき: @Test public void hello(){ String json = "{param1=\"hello\",param2=\"hello2\"}"; this.client.create(json); } サーバーで次の出力が得られます。 INFO: param1 = {param1="hello",param2="hello2"} INFO: param2 = パラメータが正しい値を与えるために何を変更する必要がありますか?

10
JERSEYを使用した入出力バイナリストリーム?
Jerseyを使用して、主にJSONエンコードされたデータを取得して提供するRESTful APIを実装しています。しかし、私は次のことを達成する必要があるいくつかの状況があります: PDF、XLS、ZIP、またはその他のバイナリファイルなどのダウンロード可能なドキュメントをエクスポートします。 一部のJSONとアップロードされたXLSファイルなどのマルチパートデータを取得する このWebサービスへのAJAX呼び出しを作成する単一ページのJQueryベースのWebクライアントがあります。現時点では、フォームの送信は行わず、GETおよびPOST(JSONオブジェクトを使用)を使用します。フォームポストを利用してデータと添付バイナリファイルを送信する必要がありますか、それともJSONとバイナリファイルを使用してマルチパートリクエストを作成できますか? 現在、アプリケーションのサービスレイヤーは、PDFファイルを生成するときにByteArrayOutputStreamを作成します。このストリームをジャージー経由でクライアントに出力する最良の方法は何ですか?MessageBodyWriterを作成しましたが、Jerseyリソースからそれを使用する方法がわかりません。それは正しいアプローチですか? 私はジャージーに含まれているサンプルを調べてきましたが、これらのいずれかを行う方法を示すものはまだ何も見つかりません。問題がある場合は、JerseyとJacksonを使用して、XMLステップなしでObject-> JSONを実行しており、実際にはJAX-RSを利用していません。
111 java  jersey  jax-rs 

3
JAX-RSのプロバイダーとはどういう意味ですか?
誰かがJAX-RSプロバイダーとは何か、そして '@Provider'アノテーションが何をするのか私に説明できますか?ドキュメントを読んでいますが、それを取得できません。 着信要求を処理するリソースクラスがある場合、プロバイダーは何をしますか?永続リソースクラス(リクエストごとではないクラス)を作成する場合、それらはシングルトンリソースクラスとどのように異なりますか?またはそれらのクラスもプロバイダーですか?
110 java  jersey  jax-rs 


5
Jerseyとjax-rsの違い
本当にジャージって何なんだろう。 私が知っているのは、Jax-RSがREST Webサービスおよびジャージを構築するためのAPIであることです。私はいくつかの情報を得て、すべて同じことを言います:「ジャージーはJax-RSの実装です」。しかし、それはどういう意味ですか? jax-rsがAPIである場合、残りのWebサービスを作成するためになぜジャージーが必要なのですか?ジャージーは、jax-rsを狙うためにさらにいくつかのライブラリですか?はいの場合、jax-rsは不完全なAPIですか?
94 java  jersey  jax-rs 

5
JAX-RSとJAX-WSの違いは何ですか?
JAX-RSとJAX-WSに関するいくつかの記事を読んだ後、確認したい質問がいくつかありました。 JAX-RSはJAX-WSのような非同期リクエストを実行できますか? JAX-RSは、Javaプラットフォームで実行されていないWebサービスにアクセスできますか? 「RESTは、PDAや携帯電話などの限られたプロファイルのデバイスに特に役立つ」とはどういう意味ですか? 「JAX-RSはXMLメッセージまたはWSDLサービス-API定義を必要としないのはどういう意味ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.