ホームページ  >  記事  >  Java  >  Java API開発におけるWebサービス処理にJAX-RSを使用する

Java API開発におけるWebサービス処理にJAX-RSを使用する

PHPz
PHPzオリジナル
2023-06-18 08:40:371299ブラウズ

Java API 開発は広く使用されているプログラミング手法であり、その成功の背後には多くの要因がありますが、その 1 つは Web サービスの処理です。 Web サービスの処理では、RESTful Web サービスを実装するための Java フレームワークである Java API for RESTful Web Services (JAX-RS) を使用できます。この記事では、JAX-RS の基本概念、アーキテクチャ、および使用法について説明します。

RESTful Web サービスとは

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 アーキテクチャ

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 アノテーション

JAX-RS は主にアノテーションを通じて RESTful Web サービスを定義します。アノテーションは、Java コードからメタデータを抽出するために使用される手法です。 JAX-RS で最も一般的に使用されるアノテーションは次のとおりです。

  • @Path: リソースのパスを指定します。たとえば、@Path("/books") は、リソースのパスが /books であることを示します。
  • @GET、@POST、@PUT、@DELETE: HTTPメソッドを指定します。
  • @Produces、@Consumes: リクエストとレスポンスのメディア タイプを指定します。
  • @QueryParam、@PathParam、@FormParam: クエリ パラメーター、パス パラメーター、フォーム パラメーターを指定します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。