今日は安らかなサービスについて読みました。基本的に、Restful Webサービスは、通常のWebサービスがSOAP=リクエストで動作するのではなく、HTTPリクエストメソッドで動作します。
通常のサーブレットはHTTPメソッドでも機能するため、Restfulサービスの必要性は何ですか?
RESTfulは、異なるテクノロジーというよりもアーキテクチャスタイルです。サーバーの観点では、完全にステートレスで、リクエストごとに自己完結するように設計されています(つまり、noセッションがあります)。クライアントの観点では、要求パラメーターではなく(自己文書化)パスパラメーターを使用したURLを介して、さまざまな形式で情報を取得する方法です。
プレーンなVanillaサーブレットを使用してこれを実行できますが、パスパラメーターを収集し、必要な応答を生成するためのボイラープレートコードがいくつか導入されます。 JAX-RSは便利で自己完結型のAPIであり、すべてのボイラープレートコードを自分で記述する必要がなく、最小限の自己文書化コードが作成されます。
以下のようにモデルとしてJAXBエンティティを持っていると仮定します。
@XmlRootElement
public class Data {
@XmlElement
private Long id;
@XmlElement
private String value;
// ...
@Override
public String toString() {
return String.format("Data[id=%d,value=%s]", id, value);
}
}
そして、以下のJAX-RSリソース:
@Path("data")
public class DataResource {
@EJB
private DataService service;
@GET
@Path("text/{id}")
@Produces(MediaType.TEXT_PLAIN)
public String getAsText(@PathParam("id") Long id) {
return String.valueOf(service.find(id));
}
@GET
@Path("xml/{id}")
@Produces(MediaType.APPLICATION_XML)
public Data getAsXml(@PathParam("id") Long id) {
return service.find(id);
}
@GET
@Path("json/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Data getAsJson(@PathParam("id") Long id) {
return service.find(id);
}
}
次に、適切な形式で目的のコンテンツを既に取得します:
それでおしまい。単一の単純なVanillaサーブレットで同じことを試してみてください:) SOAP本質的にalsoはHTTPを経由することに注意してください。基本的に、HTTPを介した追加のXMLレイヤーであり、別のネットワークプロトコルではありません。
私の意見では、より良い理解のために、私たちを混乱させるコンポーネントを分析する必要があり、これらのコンポーネントは、
使用されるフィールド化REST HTTP 1.1およびUniform Resource Identifiers(URI)を設計するために
javax.servlet.http.HttpServlet
クラス次に this answer を参照して、これらの実装がServletを使用する方法として理解する場合、具体的なjavax.servlet.http.HttpServlet
)すべての着信要求をインターセプトします。重要な引用があります、
これらのRESTサービスクラスは、パス、消費、生成などのさまざまなプロパティについてジャージフレームワークに伝えるために注釈が付けられた単純なPOJOです。
その後、さらに読むことができます- RESTとHTTPプロトコルの違いは何ですか? & HTTPとRESTの違いは何ですか? そして、WebサービスRESTFulを作成した場合に得られる利点、つまり(1つの回答からコピーした)として結論を出します。
[〜#〜] rest [〜#〜]は必ずしも[〜#〜] http [ 〜#〜]。 RESTful Webサービスは、RESTfulアーキテクチャに従う単なるWebサービスです。
What is Rest -
1- Client-server
2- Stateless
3- Cacheable
4- Layered system
5- Code on demand
6- Uniform interface
非REST HTTPの代わりにRESTを使用する利点は何ですか?
とはいえ、アドバンテージを取りたいとは思いません。デメリット(賛否両論)は非常に主観的であるため、議論します。
上記の測定値で、今あなたの質問のために、
通常のサーブレットはHTTPメソッドでも機能するため、Restfulサービスの必要性は何ですか?
RESTフレームワークはRESTサービスをエンタープライズレベルで単純化するが、HTTPサーブレットを使用して着信リクエストをインターセプトします。常にプレーンなサーブレットを使用できます。独自のRESTサービスを実装しますが、多くのボイラープレートコードを使用すると、より時間がかかります。