ホームページ バックエンド開発 PHPチュートリアル Java バックエンド開発: Akka HTTP を使用したリアクティブ API の構築

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

Jun 17, 2023 am 11:09 AM
Javaバックエンド akka http リアクティブAPI

今日の 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

あなたに最適な Java のキャリアパスを選択するための 5 つの選択肢は何ですか? あなたに最適な Java のキャリアパスを選択するための 5 つの選択肢は何ですか? Jan 30, 2024 am 10:35 AM

Java業界には5つの雇用方向がありますが、どれがあなたに適していますか? Java は、ソフトウェア開発の分野で広く使用されているプログラミング言語として、常に人気があります。 Java の強力なクロスプラットフォーム性と豊富な開発フレームワークにより、Java 開発者にはさまざまな業界で幅広い雇用の機会があります。 Java 業界には、JavaWeb 開発、モバイル アプリケーション開発、ビッグ データ開発、組み込み開発、クラウド コンピューティング開発の 5 つの主要な雇用方向があります。それぞれの方向に特徴と利点がありますので、以下では 5 つの方向について説明します。

Java バックエンド開発: Akka HTTP を使用したリアクティブ API の構築 Java バックエンド開発: Akka HTTP を使用したリアクティブ API の構築 Jun 17, 2023 am 11:09 AM

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

Java バックエンド関数開発でクロスドメインリクエストを処理するにはどうすればよいですか? Java バックエンド関数開発でクロスドメインリクエストを処理するにはどうすればよいですか? Aug 05, 2023 am 09:40 AM

Java バックエンド関数開発でクロスドメインリクエストを処理するにはどうすればよいですか?フロントエンドとバックエンドが分離されている開発モデルでは、フロントエンドがバックエンド API インターフェイスにリクエストを送信し、JavaScript を通じてデータを取得するのが非常に一般的なシナリオです。ただし、ブラウザーの同一オリジン ポリシーにより、クロスドメイン リクエストには制限があります。クロスドメイン リクエストとは、フロントエンド ページが、AJAX などの方法を介して、異なるドメイン名、異なるポート、または異なるプロトコルを持つサーバーを要求することを意味します。この記事では、Java バックエンド関数の開発においてクロスドメイン リクエストを処理する一般的な方法をコード例とともに紹介します。クロスドメインを解決する

Java バックエンド関数開発におけるデータベース トランザクションの問題を解決するにはどうすればよいですか? Java バックエンド関数開発におけるデータベース トランザクションの問題を解決するにはどうすればよいですか? Aug 04, 2023 pm 07:45 PM

Java バックエンド関数開発におけるデータベース トランザクションの問題を解決するにはどうすればよいですか? Java バックエンド関数の開発では、データベース操作を伴う関数が非常に一般的です。データベース操作において、トランザクションは非常に重要な概念です。トランザクションは、完全に実行されるか、まったく実行されない一連のデータベース操作で構成される論理単位です。実際のアプリケーションでは、データの一貫性と信頼性を維持するために、関連する一連のデータベース操作がすべて正常に実行されるか、すべてロールバックされることを確認する必要があることがよくあります。では、Java バックエンドで開発する方法

Java バックエンド開発: 安全な RESTful API の構築 Java バックエンド開発: 安全な RESTful API の構築 Jun 17, 2023 am 08:31 AM

インターネット技術の継続的な発展に伴い、RESTful API の開発と設計は重要なタスクになっています。 RESTful API は、異なるサービス間の対話のための、シンプル、軽量、柔軟で信頼性の高いメカニズムを提供します。同時に、安全な RESTful API を構築することがますます重要になっています。この記事では、Java バックエンド開発で安全な RESTful API を構築する方法を検討します。 1. RESTfulAPI について RESTfulAPI は

Java バックエンド関数開発でデータ永続性を実装するにはどうすればよいですか? Java バックエンド関数開発でデータ永続性を実装するにはどうすればよいですか? Aug 07, 2023 am 10:21 AM

Java バックエンド関数開発でデータ永続性を実装するにはどうすればよいですか?インターネットの急速な発展に伴い、データは組織や企業にとって無視できない中核資産となっています。 Java バックエンド開発では、データの永続性を実現することが重要なタスクです。この記事では、いくつかの一般的なデータ永続化メソッドを紹介し、コード例を使用して Java でデータ永続化を実装する方法を示します。 1. リレーショナル データベース リレーショナル データベースは、最も一般的なデータ永続化方法の 1 つです。 Java では JDBC (JavaDa

Javaバックエンド機能開発で検索機能を実装するにはどうすればよいですか? Javaバックエンド機能開発で検索機能を実装するにはどうすればよいですか? Aug 05, 2023 am 11:09 AM

Javaバックエンド機能開発で検索機能を実装するにはどうすればよいですか?検索機能は、最新のアプリケーションでは不可欠な機能です。電子商取引プラットフォームで商品を検索する場合でも、ソーシャル メディアで友達を検索する場合でも、検索機能はユーザーに便利で効率的な情報入手方法を提供します。 Java バックエンド開発では、さまざまなテクノロジとライブラリを使用して検索機能を実装できます。この記事では、検索機能を実装するために一般的に使用される方法を紹介し、例として Java 言語を使用したコード例を示します。 Java バックエンド開発では、通常、

Javaバックエンド関数の開発で例外に対処するにはどうすればよいですか? Javaバックエンド関数の開発で例外に対処するにはどうすればよいですか? Aug 06, 2023 pm 04:06 PM

Javaバックエンド関数の開発で例外に対処するにはどうすればよいですか? Java バックエンド開発では、例外状況の処理は非常に重要なタスクです。例外は、null ポインター例外、配列範囲外例外など、実行時に発生する場合もあれば、リソースが見つからない、権限が不十分であるなど、ビジネス ロジックの例外である場合もあります。これらの例外を適切に処理すると、コードの安定性と信頼性が向上するだけでなく、コードの保守性と可読性も向上します。この記事では、Java バックエンド開発における異常な状況に合理的に対処する方法と、対応するコードを紹介します。

See all articles