2017-02-08 4 views
0

Я новичок в Джерси. Итак, прошу прощения за любую ошибку.Как использовать необязательное количество параметров в методе REST в Джерси?

Я пытаюсь установить простой ОТДЫХ ws. Существует метод имени getConnectedMHubs, который имеет один обязательный параметр thingID и два необязательных параметра: time и delta.

Возможно ли использовать одно и то же имя метода для двух типов вызовов с необязательными параметрами и без них? я попытался указать два дорожках, но получил ModelValidationException, который говорит:

модель ресурса неоднозначным (суб) метод ресурс для метода HTTP GET и входных мим-типов, как это определено «@Consumes» и "@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, чтобы свернуть два метода в один.

Смежные вопросы