>  기사  >  백엔드 개발  >  Java 백엔드 개발: Akka HTTP를 사용하여 반응형 API 구축

Java 백엔드 개발: Akka HTTP를 사용하여 반응형 API 구축

PHPz
PHPz원래의
2023-06-17 11:09:071300검색

오늘날의 웹 개발에서는 반응형 프로그래밍이 점점 더 중요해지고 있습니다. Akka HTTP는 Akka 기반의 고성능 HTTP 프레임워크로 반응형 REST 스타일 API를 구축하는 데 적합합니다. 이 기사에서는 Akka HTTP를 사용하여 반응형 API를 구축하는 방법을 소개하고 몇 가지 실용적인 예를 제공합니다. 시작하자!

  1. Akka HTTP를 선택하는 이유

반응형 API를 개발할 때 올바른 프레임워크를 선택하는 것이 매우 중요합니다. Akka HTTP는 다음과 같은 장점이 있기 때문에 매우 좋은 선택입니다.

1.1 반응형 및 비차단형

Akka HTTP는 애플리케이션 프로그램을 차단하지 않고 많은 수의 요청을 처리할 수 있는 매우 반응성이 뛰어난 프레임워크입니다. 이는 행위자 모델을 사용합니다. 즉, 비동기 작업을 사용하여 애플리케이션의 확장성을 높게 유지하면서 요청에 신속하게 응답할 수 있습니다.

1.2 고성능

Akka 프레임워크를 기반으로 구축되었기 때문에 Akka HTTP는 더 빠른 성능을 제공할 수 있습니다. 다중 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 서버를 시작하고 지정된 포트에 연결하는 간단한 기본 메서드를 만듭니다.

다음은 시작 클래스의 코드입니다.

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. API 테스트

이제 Akka HTTP를 기반으로 한 반응형 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.