2.17. RESTEasy JavaScript API
2.17.1. RESTEasy JavaScript API について
RESTEasy は、AJAX 呼び出しを使用して JAX-RS 操作を呼び出す JavaScript API を生成できます。各 JAX-RS リソースクラスは、宣言するクラスまたはインターフェイスと同じ名前の JavaScript オブジェクトを生成します。JavaScript オブジェクトには、各 JAX-RS メソッドがプロパティーとして含まれています。
@Path("foo") public class Foo { @Path("{id}") @GET public String get(@QueryParam("order") String order, @HeaderParam("X-Foo") String header, @MatrixParam("colour") String colour, @CookieParam("Foo-Cookie") String cookie) { } @POST public void post(String text) { } }
以下の JavaScript コードは、前の例で生成した JAX-RS API を使用します。
var text = Foo.get({order: 'desc', 'X-Foo': 'hello', colour: 'blue', 'Foo-Cookie': 123987235444}); Foo.post({$entity: text});
各 JavaScript API メソッドは、任意のオブジェクトを単一のパラメーターとして取得します。ここでの各プロパティーは名前で識別される Cookie、ヘッダー、パス、クエリーまたはフォームパラメーター、または API パラメータープロパティーです。API パラメータープロパティーの詳細は、RESTEasy Javascript API Parameters の付録を参照してください。
2.17.1.1. RESTEasy JavaScript API サーブレットの有効化
RESTEasy JavaScript API はデフォルトで無効にされています。以下の手順に従って、web.xml
ファイルを更新して有効にします。
-
テキストエディターでアプリケーションの
web.xml
ファイルを開きます。 以下の設定を
web-app
タグ内のファイルに追加します。<servlet> <servlet-name>RESTEasy JSAPI</servlet-name> <servlet-class>org.jboss.resteasy.jsapi.JSAPIServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RESTEasy JSAPI</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2.17.1.2. ビルド AJAX クエリー
RESTEasy JavaScript API を使用すると、手動で要求を作成することができます。以下にこの動作の例をいくつか示します。
例: RESTEasy JavaScript API クライアントの動作をオーバーライドするために使用される REST オブジェクト
// Change the base URL used by the API: REST.apiURL = "http://api.service.com"; // log everything in a div element REST.log = function(text) { jQuery("#log-div").append(text); };
REST
オブジェクトには以下の読み書きプロパティーが含まれます。
-
apiURL
: デフォルトでは JAX-RS ルート URL に設定されます。要求の作成時にすべての JavaScript クライアント API 機能によって使用されます。 -
log
: RESTEasy クライアント API ログを受信するためにfunction(string)
に設定します。これは、クライアント API のデバッグ、およびそれらを確認できる場所のログの配置を行う場合に便利です。
例: REST.Request() メソッドを使用したカスタムリクエストの構築
var r = new REST.Request(); r.setURI("http://api.service.com/orders/23/json"); r.setMethod("PUT"); r.setContentType("application/json"); r.setEntity({id: "23"}); r.addMatrixParameter("JSESSIONID", "12309812378123"); r.execute(function(status, request, entity) { log("Response is " + status); });