2012-09-12 2 views
0

저지 (Java 용 REST Framework)를 처음 사용하고 루트 경로를 공유하는 두 개의 별도 클래스에서 두 개의 리소스를 설정하려고하는데 문제가 있습니다.저지를 사용하여 REST URI를 구성하는 방법

@Path("/users") 
public class User extends RestSupport { 

    @GET 
    @Path("/{user_uuid}") 
    public String get(@PathParam("user_uuid") String uuid) {  
     return "Hello User " + uuid; 
    } 
} 

위의 클래스 작품 : 그래서, 내가 좋아하는 뭔가가있다. 그러나 별도의 클래스에 하위 리소스를 만들고 싶습니다. 하지만 이렇게하면 URI 명명 충돌이 발생하는 것 같습니다. 그래서, 여기에, 나는

@Path("/users") 
public class Pets extends RestSupport { 

    @GET 
    @Path("/{user_uuid}/pets") 
    public String get(@PathParam("user_uuid") String uuid) {  
     return "Hello Pets " + uuid; 
    } 
} 

이 최상위 자원이 하위 자원을 많이 가지고 특정 사용자에 대한 모든 애완 동물을 얻으려면, 그래서 나는 그들을 구성하는 가장 좋은 방법을 찾고 있어요. 어떤 도움을 주시면 감사하겠습니다.

+0

가능한 복제에
@Path("/users")
에서 Pets 클래스의 경로를 : // 유래 .com/questions/9073336/jax-rs-refactor-sub-resource-into-separate-resource-class –

답변

1

변경 HTTP의
@Path("https://stackoverflow.com/users/{user_uuid}/pets")

+0

이것은 명백한 응답 같이 보이고, 나는 배치하기 전에 이것을 시도했다. 어떤 종류의 이상한 오류로 실패했습니다. 그러나, 나는이 다른 것을 줬다, 내가 나의 구조를 깨끗하게 할 것을 확인했다. 그리고 그것은 일했다. .. – tpow

1

저지가 하위 리소스에 대한 호출을 위임하게하려면 Users 루트 리소스 메소드에 HTTP 주석을 추가하지 마십시오. User 클래스 고려 :

public class User { 

    String uuid; 
    User(String id) { this.uuid = id; } 

    @GET 
    public String get() { return "Hello user " + uuid; } 

    @GET 
    @Path("/pets") 
    public String getPets() { return "Hello pets " + uuid; } 

} 

을 다음 Users 자원 조정 :

@Path("/users") 
public class Users { 

    @Path("/{user_uuid}") 
    public User get(@PathParam("user_uuid") String uuid) { 
    // Get the user from the DAO here... 
    return new User(uuid); 
    } 

} 
+0

무엇을 할 것인가? 흥미로운 것은 사용자에게 @Path가 없다는 것입니다. Jersey는 클래스 이름으로 경로를 기본값으로 설정합니까? 거기에 알고리즘은 무엇입니까? 나는 저지 문서에서 찾을 것을 시도하고있다 그러나 나는 할 수 있지 않는다 – Rhubarb

관련 문제