[java] JAX-RS 어노테이션 사용하기

이번 포스트에서는 JAX-RS(Java API for RESTful Web Services) 어노테이션을 사용하여 RESTful 웹 서비스를 개발하는 방법에 대해 알아보겠습니다.

JAX-RS란?

JAX-RS는 자바 기반의 RESTful 웹 서비스를 개발할 수 있는 API입니다. 이 API를 사용하면 간편하게 RESTful 웹 서비스를 개발할 수 있으며, HTTP 메서드(POST, GET, PUT, DELETE)를 사용하여 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있습니다.

JAX-RS 어노테이션

JAX-RS는 다양한 어노테이션을 제공하여 개발자가 간단하게 RESTful 웹 서비스를 구현할 수 있도록 도와줍니다. 몇 가지 주요한 어노테이션을 살펴보겠습니다.

@Path

@Path 어노테이션은 리소스 클래스나 메서드의 경로를 지정하는 데 사용됩니다. 예를 들어, /books 경로를 가지는 리소스를 만들려면 다음과 같이 @Path 어노테이션을 사용합니다.

@Path("/books")
public class BookResource {
    //...
}

@GET, @POST, @PUT, @DELETE

HTTP 메서드에 해당하는 작업을 수행하기 위해 @GET, @POST, @PUT, @DELETE 어노테이션을 사용합니다. 각 어노테이션은 메서드에 적용됩니다. 예를 들어, GET 메서드를 처리하기 위해 다음과 같이 @GET 어노테이션을 사용합니다.

@GET
@Path("/{id}")
public Response getBookById(@PathParam("id") int id) {
    //...
}

@PathParam

@PathParam 어노테이션은 경로의 일부를 메서드의 파라미터로 전달하기 위해 사용됩니다. 위의 예제에서는 id 경로 변수를 getBookById 메서드의 파라미터로 전달하는 방법을 보여주고 있습니다.

예제 코드

다음은 JAX-RS 어노테이션을 사용하여 간단한 RESTful 웹 서비스를 개발하는 예제 코드입니다.

@Path("/books")
public class BookResource {
  
    @GET
    @Path("/{id}")
    public Response getBookById(@PathParam("id") int id) {
        // 책 ID에 해당하는 책 데이터 반환
        Book book = // 책 데이터 가져오기
        
        if (book != null) {
            return Response.ok(book).build();
        } else {
            return Response.status(Response.Status.NOT_FOUND).build();
        }
    }
  
    @POST
    public Response createBook(Book book) {
        // 새 책 데이터를 저장하고 새로운 책 ID 반환
        int newBookId = // 책 데이터 저장
        
        URI location = UriBuilder.fromResource(BookResource.class)
            .path("/{id}")
            .build(newBookId);
        return Response.created(location).build();
    }

    // ...
}

위의 예제에서는 BookResource 클래스에 /books 경로를 설정하고, getBookById 메서드는 GET 요청을 처리하며, createBook 메서드는 POST 요청을 처리합니다.

결론

JAX-RS 어노테이션을 사용하면 간단하게 RESTful 웹 서비스를 개발할 수 있습니다. @Path, @GET, @POST, @PUT, @DELETE, @PathParam 어노테이션을 익혀서 다양한 기능을 구현할 수 있습니다. JAX-RS의 자세한 내용과 API 문서는 Oracle 공식 문서를 참조하시기 바랍니다.