今日の Web 開発では、リアクティブ プログラミングがますます重要になっています。 Akka HTTP は、Akka に基づく高性能 HTTP フレームワークで、リアクティブな REST スタイル API の構築に適しています。この記事では、いくつかの実践的な例を示しながら、Akka HTTP を使用してリアクティブ API を構築する方法を紹介します。始めましょう!
リアクティブ API を開発する場合、適切なフレームワークを選択することが非常に重要です。 Akka HTTP は、次の利点があるため、非常に良い選択です。
1.1 応答性が高く、ブロッキングしない
Akka HTTP は、多数のリクエストを処理できる非常に反応性の高いフレームワークです。アプリケーションをブロックすることなく。アクター モデルを使用するため、アプリケーションのスケーラビリティを高く保ちながら、非同期操作を使用してリクエストに迅速に応答できます。
1.2 高いパフォーマンス
Akka HTTP は Akka フレームワーク上に構築されているため、より高速なパフォーマンスを提供できます。これは、複数の CPU とコアを最大限に活用でき、高い同時実行性が使用される状況に適しているためです。
1.3 使用と構成が簡単
Akka HTTP は、構成と使用が非常に簡単です。 API を迅速に構成および管理できる強力なツールのセットを提供します。 Scala または Java でコードを記述することもできます。
次に、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(); } }
これで、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
この記事を通じて、Akka HTTP を使用してリアクティブ API を構築する方法を学びました。フレームワークの主な利点、ルーターとサービス層の作成方法、およびそれらの開始方法について学びました。 API をテストして使用できるように、一般的な HTTP メソッドの例もいくつか提供します。この記事がお役に立てば幸いです!
以上がJava バックエンド開発: Akka HTTP を使用したリアクティブ API の構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。