ホームページ  >  記事  >  バックエンド開発  >  Java バックエンド開発: Akka HTTP を使用したリアクティブ API の構築

Java バックエンド開発: Akka HTTP を使用したリアクティブ API の構築

PHPz
PHPzオリジナル
2023-06-17 11:09:071243ブラウズ

今日の Web 開発では、リアクティブ プログラミングがますます重要になっています。 Akka HTTP は、Akka に基づく高性能 HTTP フレームワークで、リアクティブな REST スタイル API の構築に適しています。この記事では、いくつかの実践的な例を示しながら、Akka HTTP を使用してリアクティブ API を構築する方法を紹介します。始めましょう!

  1. Akka HTTP を選択する理由

リアクティブ API を開発する場合、適切なフレームワークを選択することが非常に重要です。 Akka HTTP は、次の利点があるため、非常に良い選択です。

1.1 応答性が高く、ブロッキングしない

Akka HTTP は、多数のリクエストを処理できる非常に反応性の高いフレームワークです。アプリケーションをブロックすることなく。アクター モデルを使用するため、アプリケーションのスケーラビリティを高く保ちながら、非同期操作を使用してリクエストに迅速に応答できます。

1.2 高いパフォーマンス

Akka HTTP は Akka フレームワーク上に構築されているため、より高速なパフォーマンスを提供できます。これは、複数の CPU とコアを最大限に活用でき、高い同時実行性が使用される状況に適しているためです。

1.3 使用と構成が簡単

Akka HTTP は、構成と使用が非常に簡単です。 API を迅速に構成および管理できる強力なツールのセットを提供します。 Scala または Java でコードを記述することもできます。

  1. リアクティブ API の構築

次に、Akka HTTP を使用してリアクティブ API を構築する方法を示します。ユーザーのリストを管理するための簡単な API を作成します。

2.1 インストールとインポート

Akka HTTP を使用するには、次の依存関係を追加する必要があります:

<dependency>
  <groupId>com.typesafe.akka</groupId>
  <artifactId>akka-actor_2.12</artifactId>
  <version>2.5.26</version>
</dependency>

<dependency>
  <groupId>com.typesafe.akka</groupId>
  <artifactId>akka-http_2.12</artifactId>
  <version>10.1.10</version>
</dependency>

これらの依存関係が Maven または Gradle プロジェクトに含まれていることを確認してください。

2.2 ルーターの作成

次に、さまざまな HTTP リクエストを受信し、対応する応答を提供するルーターを作成します。 Akka HTTP によって提供される Route クラスを使用してルーターを定義し、対応するルーティング ルールを提供します。

この例では、GET、POST、PUT、および DELETE メソッドを含む /User パスを作成します。 GET メソッドはユーザーのリストを返し、POST メソッドは新しいユーザーを作成し、PUT メソッドはユーザーを更新し、DELETE メソッドはユーザーを削除します。

次はルーターのコードです:

import akka.http.javadsl.server.Route;
import akka.http.javadsl.server.AllDirectives;

public class UserRouter extends AllDirectives {
  
  private final UserService userService;
  
  public UserRouter(UserService userService) {
    this.userService = userService;
  }
  
  public Route createRoute() {
    return route(
      pathPrefix("users", () -> route(
        get(() -> complete(userService.getUsers())),
        post(() -> entity(
          Jackson.unmarshaller(User.class), user -> complete(
            StatusCodes.CREATED, userService.createUser(user)
          )
        )),
        put(() -> entity(
          Jackson.unmarshaller(User.class), user -> complete(
            userService.updateUser(user)
          )
        )),
        delete(() -> parameter(
          "id", id -> complete(
            userService.deleteUser(Long.parseLong(id))
          )
        ))
      ))
    );
  }
  
}

2.3 サービス層の実装

次に、ユーザー サービス層を実装する必要があります。サービス層は実際にはすべてのリクエストを処理し、ストレージ層 (データベースなど) を使用してユーザー データを管理します。この例では、単純な HashMap を使用してデータを保存します。

UserService クラスのコードは次のとおりです。

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;

public class UserService {

  private final Map<Long, User> users = new HashMap<>();
  private final AtomicLong counter = new AtomicLong();

  public User createUser(User user) {
    long id = counter.incrementAndGet();
    user.setId(id);
    users.put(id, user);
    return user;
  }

  public User updateUser(User user) {
    users.put(user.getId(), user);
    return user;
  }

  public User deleteUser(long id) {
    return users.remove(id);
  }

  public List<User> getUsers() {
    return new ArrayList<>(users.values());
  }

}

2.4 サービスの開始

ルーターとサービス層を定義したので、アプリケーションを開始する必要があります。この例では、Akka HTTP サーバーを起動し、指定されたポートに接続する単純な main メソッドを作成します。

これがスタートアップ クラスのコードです:

import akka.actor.ActorSystem;
import akka.stream.ActorMaterializer;
import akka.http.javadsl.server.HttpApp;

public class Main extends HttpApp {

  private final UserService userService = new UserService();
  private final UserRouter userRouter = new UserRouter(userService);

  public static void main(String[] args) {
    Main main = new Main();
    main.startServer("localhost", 8080, ActorSystem.create(), ActorMaterializer.create());
  }

  @Override
  protected Route routes() {
    return userRouter.createRoute();
  }
  
}
  1. Test API

これで、Akka HTTP ベースの React API が正常に作成されました。さまざまな HTTP メソッドを使用してユーザーのリストを管理します。 Postman などのツールを使用して API をテストし、正しく動作することを確認してみましょう。

GET メソッド: ユーザー リストの取得

GET http://localhost:8080/users

POST メソッド: 新しいユーザーの作成

POST http://localhost:8080/users
Body: 
{
  "name": "John Smith",
  "email": "john.smith@example.com"
}

PUT メソッド: 既存のユーザーの更新

PUT http://localhost:8080/users
Body: 
{
  "id": 1,
  "name": "John Smith",
  "email": "john.smith@example.com"
}

DELETE メソッド: 既存のユーザーの削除ユーザー

DELETE http://localhost:8080/users?id=1
  1. 概要

この記事を通じて、Akka HTTP を使用してリアクティブ API を構築する方法を学びました。フレームワークの主な利点、ルーターとサービス層の作成方法、およびそれらの開始方法について学びました。 API をテストして使用できるように、一般的な HTTP メソッドの例もいくつか提供します。この記事がお役に立てば幸いです!

以上がJava バックエンド開発: Akka HTTP を使用したリアクティブ API の構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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