RESTful 애플리케이션에서 자원의 URI 패턴 정의
REST(Representational State Transfer) 서비스는 자원 조작에 기반합니다. RESTful 서비스의 자원은 주소 지정 가능하며, URL은 REST에서 주소 지정 기능을 획득하는 기본적인 방법입니다.
시작하기 전에
RESTful 서비스로 게시하려는 애플리케이션의 자원을 식별합니다.
이 태스크 정보
URL은 자원 위치를 지정하는 데 사용됩니다. 서버 및 클라이언트 간 상호작용은 URL에 대한 HTTP 작업 실행에 기반합니다. 자원을 초기에 검색한 후에 일정 시간이 지나서 클라이언트는 자원에 직접 주소를 지정할 수 있으므로 URL 패턴 정의가 중요합니다.
URL은 일반적으로 웹 브라우저에 주소를 입력할 때 사용됩니다(예: http://www.ibm.com/ 또는 http://www.example.com/bookstore/books/ISBN123). URL은 사용자가 이해하지 않아도 되지만, 이해 가능한 패턴으로 논리 URL을 제공하는 RESTful 서비스에서는 클라이언트 애플리케이션 개발자가 보다 효율적으로 작업을 진행할 수 있습니다.
RESTful 클라이언트는 자원을 조작할 때 URL을 사용합니다. 각 자원에는 고유한 URL이 있어야 합니다. 일부 URL 패턴은 고유 ID가 추가된 콜렉션 경로를 보유합니다. 예를 들어, http://www.example.com/bookstore/books를 콜렉션 자원 URL로, http://www.example.com/bookstore/books/ISBN123을 고유한 서적 자원 URL로 사용하고 http://www.example.com/bookstore/books/ISBN123/authors를 사용하여 ISBN123 작성자를 설명하는 콜렉션 자원을 검색할 수 있습니다.
이러한 기능은 애플리케이션의 사용 및 성능에 영향을 줄 수 있기 때문에 애플리케이션 개발자는 URL의 세분성을 신중히 고려해야 합니다. 예를 들어, 서적 자원의 일부로 서적의 작성자 정보를 포함하거나 서적 자원에서 참조하는 고유한 URL을 통해 고유 자원으로 작성자 정보를 정의할 수 있습니다. 자원 재사용에 따라 작성자가 다른 서적을 작성한 경우 서적 자원의 하이퍼링크에서 참조하는 작성자 정보에 대해 별도의 자원을 정의하는 것이 보다 효율적일 수 있습니다.
클라이언트에 초기 URL을 지정한 후 후속 관련 요청은 현재 자원을 구문 분석하여 검색할 수 있습니다. 서적 예제에서, http://www.example.com/bookstore/books/에 대한 GET 요청은 http://www.example.com/bookstore/books/ISBN123을 포함할 수 있는 서적 URL 목록을 검색합니다.
시스템은 사용 가능한 자원에 의존하므로 URL은 일반적으로 수명이 설정됩니다. HTTP에는 경로 재지정을 위한 기본 상태 코드가 있으므로(예: 301 영구 이동 및 307 임시적으로 경로 재지정) 캐시를 사용하는 사용자 및 클라이언트는 종종 이전에 검색된 URL을 먼저 재사용합니다. 또한 URL 패턴에서 버전 ID를 포함하는 방법을 고려할 수도 있습니다(예: http://www.example.com/bookstore/v2/books/ISBN123). Java™ 코드를 사용하여 인터페이스를 정의하는 작업을 포함하는 계획과 같이, 예상되는 수명 때문에 URL 패턴은 신중하게 선택해야 합니다.
JAX-RS(Java API for RESTful Web Services)에서는 Java 클래스 파일 또는 Java 메소드에 @Path 어노테이션을 추가하여 자원의 상대적 URL을 정의해야 합니다. JAX-RS 하위 자원 위치 지정자 및 하위 자원 메소드를 사용하여 자원을 정의할 수 있습니다. URL에서 경로 매개변수 또는 매트릭스 매개변수와 같은 매개변수를 사용하여 자원을 식별합니다.
@Path 어노테이션의 값은 자원에 대한 전체 URL의 상대적 파트를 정의합니다. 기본 URL은 애플리케이션 모듈의 web.xml 파일에서 도메인, 포트, 애플리케이션 모듈 컨텍스트 루트, URL 패턴 맵핑에서 파생됩니다. 예를 들어, 도메인이 www.example.com이고, 포트가 9060이고, 모듈 컨텍스트 루트가 example이고, 서블릿 URL 패턴이 store/*이고, @Path 어노테이션 값이 /bookstore/books인 경우, 전체 URL은 http://www.example.com:9060/example/store/bookstore/books입니다.
프로시저
결과
RESTful 서비스에 대한 자원을 식별할 URL을 작성합니다. 애플리케이션 디자인에서 조기에 URL 패턴에 대한 문제를 고려하면 RESTful 서비스는 연장된 기간에 걸쳐 사용성 및 가치를 향상시킵니다.
다음에 수행할 작업
정의된 URL에 자원이 존재합니다. 그러나 자원에는 GET, POST, PUT 또는 DELETE와 같은 HTTP 메소드 조치를 처리하는 메소드가 아직 없습니다. 지원되는 HTTP 메소드를 사용하는 자원의 기능을 정의하는 방법을 자세히 학습하려면 RESTful 애플리케이션에 대한 자원 메소드 정의를 참조하십시오.