backend

JAX-RS의 구성

버리야 2009. 6. 1. 13:34
반응형
1. Root Resource Classes

* 웹 리소스을 구현하기 위해 JAX-RS 어노테이션을 사용하는 자바 클래스
 적어도 하나의 메소드에 @Path을 사용한 POJO

Root resource class들은 JAX-RS runtime에 인스턴스화된다.
 @Path 어노테이션이 달린 Resource 클래스

@Path("/hi")
public class HiResource {
    @GET 
    @Produces("text/plain")
    public String getAsText() {
        return "Hi! buri. Show Text.";
    }


2. Resource Methods

@GET
@POST
@PUT
@DELETE
@HEAD

*  URI Templates

@Path annotation의 값은 상대 경로 URI.

@Path("user list/{id}")
@Path("user%20list/{id})

두개의  path는 동등하다. 어노테이션의 값은 자동으로 인코딩된다

정규 표현식도 가능하다.

* sub resources
리소스 클래스에서 @Path 어노테이션이 달린 메소드는 하위 리소스 메소드나 하위 리소스 로케이터가 된다.

3. Extracting Request Parameters

@FormParam : Form값이 전송된 경우 Form안의 값들을 꺼내온다.
@QueryParam : URI 쿼리 파라미터의 값을 꺼내온다.
@PathParam : URI template에 명시되어 있는 값을 꺼내온다.  
@CookieParam : 쿠키에 있는 값을 꺼내온다.
@HeaderParam : 헤더에 있는 값을 꺼내온다.
@Context : Request header나  URI 정도등등의 inject 정보를 사용할 수 있다.

@POST
@Consumes("application/x-www-form-urlencoded")
public void post(@FormParam("name") String name){ .... }


@GET
@Path("/user/{id}")
public void get(@PathParam("id") String id) { .... }


@GET
public String get(@Context UriInfo ui){
    MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
    MultivaluedMap<String, String> pathParams = ui.getPathParameters();
}


@GET
public String get(@Context HttpHeaders hh){
    MultivaluedMap<String, String> headerParams = ui.getRequestHeaders();
    Map<String, Cookie> pathParams = ui.getCookies();
}


* Annotation Inheritance

public interface ReadOnlyAtomFeed {  
   @GET @Produces("application/atom+xml")  
   Feed getFeed();  
 }  
  
 @Path("feed")  
 public class ActivityLog implements ReadOnlyAtomFeed {  
    public Feed getFeed() {...}  
 } 

* 기타 Annotation

@DefaultValue : @Context만 빼고 위의 다른 어노테이션에서 기본값 설정을 할때에 사용

@Encoded : @FormParam, @MatrixParam, @QueryParam, @PathParam 에서 파라미터 값을 자동으로 URI 디코딩하지 않도록 한다.



반응형

'backend' 카테고리의 다른 글

Jersey의 Exception Handling  (0) 2009.06.05
Jersey의 Return Type  (0) 2009.06.04
Jersey의 MessageBodyReader/Writer  (1) 2009.06.03
JAX-RS @Produces와 @Consumes  (2) 2009.06.02
What is Jersey?  (0) 2009.06.01
What is JAX-RS?  (0) 2009.05.29
What is REST?  (2) 2009.05.27
Thinkfree Office Live 한국어 서비스 시작  (2) 2009.04.01