JAX-RS(Java API for RESTful Web Services)는 Java EE(현재는 Jakarta EE)에서 RESTful 웹 서비스를 개발하기 위한 표준 API입니다.
JAX-RS는 어노테이션을 기반으로 간단하고 직관적인 방식으로 RESTful 웹 서비스를 구현할 수 있도록 도와줍니다.
1. JAX-RS 주요 개념
- 리소스(Resource): REST 아키텍처에서 식별 가능한 개체로, URI를 통해 접근할 수 있습니다.
- 리소스 클래스(Resource Class): 리소스를 구현하는 Java 클래스입니다.
- 리소스 메서드(Resource Method): HTTP 요청을 처리하는 리소스 클래스의 메서드입니다.
- 요청 매핑(Request Mapping): HTTP 요청을 리소스 메서드에 매핑하는 것입니다.
- 주입(Injection): 요청 파라미터, 헤더, 쿠키 등을 리소스 메서드의 파라미터로 주입하는 것입니다.
- 응답 처리(Response Handling): 리소스 메서드의 반환값을 HTTP 응답으로 변환하는 것입니다.
2. JAX-RS 구현체
JAX-RS는 명세(Specification)일 뿐, 실제 구현은 별도의 라이브러리를 통해 이루어집니다. 대표적인 JAX-RS 구현체로는 다음과 같은 것들이 있습니다.
- Jersey: 오라클에서 개발한 JAX-RS 참조 구현입니다.
- RESTEasy: JBoss에서 개발한 JAX-RS 구현체입니다.
- Apache CXF: Apache Software Foundation에서 개발한 오픈 소스 프레임워크로, JAX-RS를 지원합니다.
3. JAX-RS 어노테이션
JAX-RS는 어노테이션을 사용하여 RESTful 웹 서비스를 구현합니다. 주요 어노테이션은 다음과 같습니다.
@Path
: 리소스 클래스나 메서드의 상대 경로를 지정합니다.@GET
,@POST
,@PUT
,@DELETE
등: HTTP 메서드를 지정합니다.@Produces
: 응답의 미디어 타입을 지정합니다.@Consumes
: 요청의 미디어 타입을 지정합니다.@PathParam
: URI 경로에서 파라미터를 추출합니다.@QueryParam
: 쿼리 파라미터를 추출합니다.@HeaderParam
: 요청 헤더에서 값을 추출합니다.@CookieParam
: 쿠키에서 값을 추출합니다.
4. JAX-RS 예제
다음은 JAX-RS를 사용하여 간단한 RESTful 웹 서비스를 구현한 예제입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@Path(“/users”)
public class UserResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<User> getAllUsers() {
// 모든 사용자 정보 조회
return userService.findAllUsers();
}
@GET
@Path(“/{id}”)
@Produces(MediaType.APPLICATION_JSON)
public User getUser(@PathParam(“id”) Long id) {
// 특정 사용자 정보 조회
return userService.findUserById(id);
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createUser(User user) {
// 새로운 사용자 생성
User createdUser = userService.createUser(user);
return Response.created(URI.create(“/users/” + createdUser.getId())).build();
}
}
|
cs |
위 예제에서는 /users
경로에 대한 GET, POST 요청을 처리하는 리소스 메서드를 정의하였습니다.
@Produces
와 @Consumes
어노테이션을 사용하여 요청과 응답의 미디어 타입을 지정하였고, @PathParam
을 사용하여 URI 경로에서 파라미터를 추출하였습니다.
JAX-RS는 RESTful 웹 서비스 개발을 위한 강력하고 유연한 API를 제공합니다. JAX-RS를 사용하면 간결하고 표준화된 방식으로 RESTful 웹 서비스를 구현할 수 있으며, 다양한 Java EE 컨테이너에서 실행할 수 있습니다.