Java API 開発は広く使用されているプログラミング手法であり、その成功の背後には多くの要因がありますが、その 1 つは Web サービスの処理です。 Web サービスの処理では、RESTful Web サービスを実装するための Java フレームワークである Java API for RESTful Web Services (JAX-RS) を使用できます。この記事では、JAX-RS の基本概念、アーキテクチャ、および使用法について説明します。
JAX-RS の導入を開始する前に、RESTful Web サービスの基本概念を理解する必要があります。 RESTとはRepresentational State Transferの略で、プレゼンテーション層の状態転送を意味します。 RESTful Web サービスは、HTTP プロトコルに基づくサービスであり、Uniform Resource Identifier (URI) を使用してリソースを表し、HTTP メソッド (GET、POST、PUT、DELETE) を使用してリソースを操作します。 RESTful Web サービスは、HTTP プロトコルを使用するため、他の Web アプリケーションと簡単に対話できる軽量のサービスです。
JAX-RS フレームワークは Java サーブレット API に基づいて実装されており、Java クラスとアノテーションを使用して RESTful Web サービスを定義できます。フレームワークの中心となるのは、クライアントから HTTP リクエストを受信し、それらを Java オブジェクトに変換する HTTP サーバーです。 JAX-RS では、リソースは RESTful Web サービスの中核であり、リソースはメソッドのコレクションです。これらのメソッドは HTTP リクエストを処理します。
JAX-RS フレームワークは、JAX-RS API と JAX-RS 実装という 2 つの主要な部分で構成されます。 JAX-RS API は JAX-RS 仕様を定義する Java インターフェースであり、JAX-RS 実装は JAX-RS 仕様を実装するフレームワークです。現在、Jersey、CXF、RESTeasy など、多くの JAX-RS 実装があります。
JAX-RS は主にアノテーションを通じて RESTful Web サービスを定義します。アノテーションは、Java コードからメタデータを抽出するために使用される手法です。 JAX-RS で最も一般的に使用されるアノテーションは次のとおりです。
以下では、Jersey を使用して単純な RESTful Web サービスを実装します。このサービスは 2 つのリクエストを処理します。1 つはすべての書籍を取得するリクエスト、もう 1 つは書籍 ID に基づいて 1 つの書籍を取得するリクエストです。このサービスを実装するには、@Path、@GET、@Produces アノテーションを使用します。
まず、id と title の 2 つの属性を持つ Book クラスを作成する必要があります。次に、@Path("/books") アノテーションが付けられ、getAllBooks() と getBookById() という 2 つのメソッドが含まれる BookResource クラスを作成する必要があります。 getAllBooks() メソッドでは、@GET および @Produces アノテーションを使用して、HTTP メソッドと応答のメディア タイプを指定します。 getBookById() メソッドでは、@GET、@Path、および @Produces アノテーションを使用して、HTTP メソッド、要求パス、および応答メディア タイプを指定します。
public class Book { private int id; private String title; public Book(int id, String title) { this.id = id; this.title = title; } public int getId() { return id; } public String getTitle() { return title; } } @Path("/books") public class BookResource { private static List<Book> bookList = new ArrayList<>(); static { bookList.add(new Book(1, "Java SE 8")); bookList.add(new Book(2, "Java EE 7")); bookList.add(new Book(3, "Spring 5")); } @GET @Produces(MediaType.APPLICATION_JSON) public List<Book> getAllBooks() { return bookList; } @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public Book getBookById(@PathParam("id") int id) { return bookList.stream().filter(b -> b.getId() == id).findFirst().orElse(null); } }
最後に、ローカル ホスト localhost のポート 8080 でこのサービスを実行するためのスタートアップ クラスを作成する必要があります。 URI /api を使用して、このサービスへのパスを指定します。たとえば、すべての書籍を取得するリクエストは http://localhost:8080/api/books にあり、ID 1 の書籍を取得するリクエストは http://localhost:8080/api/books/1 になります。
public class Application extends ResourceConfig { public Application() { packages("com.example.web"); } public static void main(String[] args) throws Exception { URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build(); ResourceConfig config = new Application(); HttpServer server = JdkHttpServerFactory.createHttpServer(baseUri, config, false); Runtime.getRuntime().addShutdownHook(new Thread(server::stop)); server.start(); } }
JAX-RS は、RESTful Web サービスを作成する便利な方法を提供し、Java アプリケーションとの統合は非常に簡単です。 JAX-RS API は、RESTful Web サービスを定義するための一連のアノテーションとクラスを提供し、JAX-RS 実装はこれらの仕様を実際の Java コードに変換します。 JAX-RS を使用すると、RESTful Web サービスの作成とデプロイが容易になり、アプリケーションの可用性とスケーラビリティが向上します。
以上がJava API開発におけるWebサービス処理にJAX-RSを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。