RESTサービス作るのを楽にやりたいとおもったらまあJava使わないのですが、
大人の事情でやっぱJavaだよねということはよくあり、そんなときにはJAX-RS (Java API for RESTful Web Services) がめっちゃ便利です。
NetBeansでポチポチーするだけでRestWebサービスは作れます。
RESTサービスとして使うにはクロスドメインでアクセスを許可(CORS)するため「Access-Control-Allow-Origin」ヘッダーをつけましょう。
JAX-RS2.0
JAX-RSというと1.1の頃からの参照実装であるJersey1系が有名ですが、
JavaEE7時代としては大幅な機能追加されているJAX-RS2.0をつかいます。
JavaEE7から標準になったので特に追加なく使えてよい。
ちなみJAX-RS2.0はこんな感じで機能拡充しています
・クライアント側でも非同期処理をサポート
・Bean Validation対応
・プロバイダー機能の拡充
エンティティー・インターセプターの追加
フィルター機能の追加
ヘッダーの指定方法
さて、ヘッダの指定方法ですが、ぐぐるとJAXRS1.1系の話ばかり出てきて惑わされますが気にせずいきましょう。
設定の仕方はJAX-RS2.0だと超絶簡単。以下のようなクラスを作ってクラスパスに置くだけ。
import java.io.IOException; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.ext.Provider; /** * * @author garapon */ @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext request, ContainerResponseContext response) throws IOException { response.getHeaders().add("Access-Control-Allow-Origin", "*"); response.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization"); response.getHeaders().add("Access-Control-Allow-Credentials", "true"); response.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
JAX-RS2.0の新機能のプロバイダーでFilterが設定できるようになったのでマジ便利です。web.xmlとか書かなくていい。