맨위로가기

JAX-RS

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

JAX-RS(Java API for RESTful Web Services)는 웹 리소스를 리소스 클래스에 매핑하기 위한 Java API 규격이다. `jakarta.ws.rs` 패키지를 사용하며, `@Path`, `@GET`, `@PUT`, `@POST`, `@DELETE`, `@HEAD`, `@Produces`, `@Consumes` 등의 어노테이션을 제공하여 HTTP 요청 유형, 응답 및 요청의 인터넷 미디어 타입을 지정한다. 또한, 요청에서 정보를 가져오기 위한 `@PathParam`, `@QueryParam`, `@MatrixParam`, `@HeaderParam`, `@CookieParam`, `@FormParam`, `@DefaultValue`, `@Context`와 같은 어노테이션을 사용하여 메서드 매개변수에 값을 바인딩한다. JAX-RS는 2008년 9월에 1.0 버전이 발표되었으며, 2.0, 2.1 버전을 거쳐 현재 여러 구현체가 존재한다. 주요 구현체로는 Apache CXF, Jersey, RESTEasy, Restlet 등이 있으며, WebSphere Application Server, WebLogic Server와 같은 상용 WAS에서도 지원한다.

더 읽어볼만한 페이지

  • 자바 플랫폼, 엔터프라이즈 에디션 - IBM 웹스피어
    IBM 웹스피어는 IBM에서 출시한 기업용 소프트웨어 제품군 브랜드로, 다양한 애플리케이션 인프라, 비즈니스 프로세스 통합, 정보 통합 및 개발 도구를 포함한다.
  • 자바 플랫폼, 엔터프라이즈 에디션 - 자카르타 서버 페이지
    자카르타 서버 페이지(JSP)는 웹 애플리케이션 개발에 사용되는 서버 측 스크립팅 기술로, 서블릿으로 변환되어 실행되고 HTML 형태로 결과를 반환하며, 지시어, 스크립틀릿, 표현식, 액션 등의 문법 요소, 표현 언어(EL), JSTL을 통해 동적인 웹 페이지를 구현하고 개발 편의성을 높였다.
  • 자바 플랫폼 - 블루레이
    블루레이 디스크는 DVD 후속 매체로, 청색 레이저를 사용하여 고화질 영상과 음향을 제공하며 HD DVD와의 경쟁 후 고밀도 광디스크 표준으로 자리 잡았으나 스트리밍 서비스 성장으로 녹화용 디스크 생산이 중단되는 추세이다.
  • 자바 플랫폼 - 자바 플랫폼, 마이크로 에디션
    자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
JAX-RS - [IT 관련 정보]에 관한 문서
개요
이름Jakarta RESTful Web Services (JAX-RS)
원래 이름Java API for RESTful Web Services
개발선 마이크로시스템즈
오라클
이클립스 재단
최신 릴리스 버전3.1.9
최신 릴리스 날짜2024년 10월 17일
플랫폼자바
프로그래밍 언어자바
장르애플리케이션 프레임워크
라이선스EPL 2.0
GPL v2 w/Classpath exception
웹사이트공식 웹사이트

2. 규격 (Specification)

JAX-RS는 웹 리소스로서 리소스 클래스(POJO)를 매핑하는 데 도움이 되는 몇 가지 어노테이션을 제공한다. 사용되는 어노테이션은 `jakarta.ws.rs` 패키지에 정의되어 있다 (Java 패키지 `javax.ws.rs`가 2019년 5월 19일에 이름이 변경됨)[2]).

JAX-RS는 크게 리소스 매핑 어노테이션과 정보 추출 어노테이션으로 나눌 수 있으며, 자세한 내용은 하위 섹션을 참고할 수 있다.

2. 1. 리소스 매핑 어노테이션

JAX-RS는 웹 리소스로서 리소스 클래스(POJO)를 매핑하는 데 도움이 되는 몇 가지 어노테이션을 제공한다. 어노테이션은 Java 패키지 `jakarta.ws.rs`를 사용한다(이전에는 `javax.ws.rs` 였지만 2019년 5월 19일에 이름이 변경되었다[2]).

기본적인 어노테이션은 다음과 같다.

  • `@Path`는 리소스 클래스 또는 메서드에 대한 상대적인 경로를 지정한다.
  • `@GET`, `@PUT`, `@POST`, `@DELETE` 및 `@HEAD`는 리소스의 HTTP 요청 유형을 지정한다.
  • `@Produces`는 응답 인터넷 미디어 타입을 지정한다 ( 콘텐츠 협상에 사용됨).
  • `@Consumes`는 허용되는 요청 인터넷 미디어 타입을 지정한다.


요청에서 정보를 가져오기 위해 메서드 매개변수에 대한 추가 어노테이션도 제공한다. 모든 `@*Param` 어노테이션은 필요한 값을 조회하는 데 사용되는 특정 형태의 키를 사용한다.

  • `@PathParam`은 메서드 매개변수를 경로 세그먼트에 바인딩한다.
  • `@QueryParam`은 메서드 매개변수를 HTTP 쿼리 매개변수의 값에 바인딩한다.
  • `@MatrixParam`은 메서드 매개변수를 HTTP 매트릭스 매개변수의 값에 바인딩한다.
  • `@HeaderParam`은 메서드 매개변수를 HTTP 헤더 값에 바인딩한다.
  • `@CookieParam`은 메서드 매개변수를 쿠키 값에 바인딩한다.
  • `@FormParam`은 메서드 매개변수를 값에 바인딩한다.
  • `@DefaultValue`는 키를 찾을 수 없는 경우 위의 바인딩에 대한 기본값을 지정한다.
  • `@Context`는 객체의 전체 컨텍스트를 반환한다 (예: `@Context HttpServletRequest request`).

2. 2. 정보 추출 어노테이션

JAX-RS는 요청에서 정보를 가져오기 위해 메서드 매개변수에 추가적인 어노테이션을 제공한다. 모든 `@*Param` 어노테이션은 필요한 값을 조회하는 데 사용되는 특정 형태의 키를 사용한다.[2] `@DefaultValue`는 키를 찾을 수 없을 때 기본값을 지정하며, `@Context`는 객체의 전체 컨텍스트를 반환한다.

2. 2. 1. 파라미터 추출 어노테이션

JAX-RS는 요청에서 정보를 가져오기 위해 메서드 매개변수에 대한 추가 어노테이션을 제공한다. 모든 `@*Param` 어노테이션은 필요한 값을 조회하는 데 사용되는 특정 형태의 키를 사용한다.[2]

  • `@PathParam`은 메서드 매개변수를 경로 세그먼트에 바인딩한다.
  • `@QueryParam`은 메서드 매개변수를 HTTP 쿼리 매개변수의 값에 바인딩한다.
  • `@MatrixParam`은 메서드 매개변수를 HTTP 매트릭스 매개변수의 값에 바인딩한다.
  • `@HeaderParam`은 메서드 매개변수를 HTTP 헤더 값에 바인딩한다.
  • `@CookieParam`은 메서드 매개변수를 쿠키 값에 바인딩한다.
  • `@FormParam`은 메서드 매개변수를 값에 바인딩한다.

2. 2. 2. 기타 어노테이션


  • `@DefaultValue`는 키를 찾을 수 없는 경우 위의 바인딩에 대한 기본값을 지정한다.[2]
  • `@Context`는 객체의 전체 컨텍스트를 반환한다 (예: `@Context HttpServletRequest request`).[2]

3. 버전 역사

JAX-RS API 역사
JAX-RS 버전발표자바 플랫폼중요한 변화
JAX-RS 1.02008년 9월 예정Java EE 6JSR 311
JAX-RS 2.02011년 1월Java EE 7JSR 339 전문가 그룹 구성, 주요 목표는 공통 클라이언트 API와 REST의 HATEOAS 원칙에 따른 하이퍼미디어 지원.[3]
JAX-RS 2.12017년 8월 22일Java EE 8서버 전송 이벤트, 반응형 클라이언트, JSON-B 지원.[4][5]


4. 구현 (Implementations)

JAX-RS는 API 자체이며, 실제 구현체로는 다음과 같은 것들이 있다.[6][9]


  • Apache CXF
  • Jersey
  • JBoss RESTEasy
  • Restlet


이 외에도 다양한 구현체들이 존재한다.

4. 1. 오픈 소스 구현체

JAX-RS의 주요 오픈 소스 구현체는 다음과 같다:

이 외에도 다음과 같은 구현체들이 존재한다:

  • IBM WebSphere Application Server[6]
  • 버전 7.0: [http://www-01.ibm.com/software/webservers/appserv/was/featurepacks/cea/index.html "통신 지원 애플리케이션용 기능 팩"]
  • 버전 8.0 이상: 기본적으로
  • 오라클 WebLogic Application Server [http://docs.oracle.com/cd/E24329_01/web.1211/e24963/standards.htm#g1090347 참고][6]
  • Cuubez 프레임워크 (https://web.archive.org/web/20190707005602/http://cuubez.com/)[6]
  • [https://github.com/codenvy/everrest/wiki Everrest] (Codenvy)[6]
  • [http://jello-framework.com Jello-Framework]: Google App Engine에 최적화된 Java 애플리케이션 프레임워크 (강력한 RESTful 엔진과 포괄적인 데이터 권한 부여 모델 포함)[6]
  • 아파치 톰EE: 아파치 톰캣에 추가됨[6]

4. 2. 상용 WAS

4. 3. 기타

참조

[1] 문서 Hadley, p. 1.
[2] 웹사이트 Rename package commit on Github https://github.com/e[...]
[3] 웹사이트 JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services http://jcp.org/en/js[...]
[4] 웹사이트 JSR 370: Java API for RESTful Web Services (JAX-RS 2.1) Specification http://jcp.org/en/js[...]
[5] 웹사이트 JSR 367: Java API for JSON Binding (JSON-B) http://jcp.org/en/js[...]
[6] 웹사이트 A Comparison of JAX-RS Implementations http://www.infoq.com[...] 2008-10-01
[7] 문서 Hadley, p. 1.
[8] 웹사이트 JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services http://jcp.org/en/js[...]
[9] 웹사이트 A Comparison of JAX-RS Implementations http://www.infoq.com[...] Mark Little



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com