2017-02-08 1 views
0

저는 Jersey를 처음 사용합니다. 그러니 실수를 용서해주십시오.Jersey REST 메서드에서 선택적 매개 변수 수를 사용하려면 어떻게해야합니까?

간단한 REST ws를 설정하려고합니다. 하나의 필수 매개 변수 thingID과 두 개의 선택적 매개 변수 timedelta을 갖는 메소드 이름 getConnectedMHubs이 있습니다.

선택적 매개 변수가 있거나없는 두 가지 유형의 호출에 동일한 메서드 이름을 사용할 수 있습니까? 내가이 명하는 Pathes를 지정하려하지만 ModelValidationException있어, 그 말한다 :

자원 모델이 "@Consumes"에 의해 HTTP 방법 GET 입력 마임 유형에 대한 모호한 (하위) 리소스 방법 정의 된 것처럼

"@Produces" 공공 Java 메소드에 주석 ...

코드 샘플 :이 같은 경로 패턴을 사용하여

@Path("/api") 
public class RendezvousWebService { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("connectedmhubs/{mhubid}") 
    public String getConnectedThings(@PathParam("mhubid") String strMHubID) { 
     // ... 
     return "{}"; 
    } 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("connectedmhubs/{mhubid}/{time}/{delta}") 
    public String getConnectedThingsExtended(@PathParam("mhubid") String strMHubID, @PathParam("time") long timestamp, @PathParam("delta") long delta){ 
     // ... 
     return "{}"; 
    } 

} 

답변

1

:

@Path("connectedmhubs/{mhubid}") 

은 경로 매개 변수를 필수로 만듭니다. 그러나이 제한을 극복하기 위해 정규 표현식을 사용할 수 있습니다. 자세한 내용은 link을 참조하십시오.

2

@Path을 사용하면 필수 매개 변수가됩니다. 정규 표현식으로이 문제를 해결하거나 @QueryParam@DefaultValue을 사용하여 두 메소드를 하나로 변환 할 수 있습니다.