单个重定向资源的多个get方法

时间:2017-04-05 08:43:59

标签: java rest restlet

我有以下两个问题:

/api/resource/{id}
/api/resource?id=x&id=y&id=z

他们需要使用两种不同的资源方法:

@Get
public DTO getSingleDTO();
@Get
public List<DTO> getMultipleDTO();

是否可以将这两种方法放入单个restlet资源中? 我尝试使用@Get("?id"),但这个注释并不是非常强大,在我的情况下无法使用。

实现此目的的最佳方法是什么?我不想为我拥有的每一种资源实施两个控制器。

1 个答案:

答案 0 :(得分:2)

我不知道你的模型,但从我所看到的,我会选择单一路径和单一资源方法:

Application类中的

router.attach("/api/resource/{id_1}?id_2=y&id_3=z", MyResource.class)

MyResource课程中:

   public Representation doMyThing() {

      String id1 = getRequestAttributes("id_1").toString()getRequestAttributes();
      String id2 = getQueryValue("id_2");
      String id3 = getQueryValue("id_3");

      if (StringUtils.isEmpty(id2) && StringUtils.isEmpty(id3)) {
        DTO result = service.handleSingleId(id1);
        return JsonRepresentation(result);
      } else {
        List<DTO> result = service.handleMultipleIds(id1, id2, id3);
        return JsonRepresentation(result);
      }     
   }

您可以随时返回其他Representation而非JsonRepresentation,如我所建议的那样