我有以下两个问题:
/api/resource/{id}
/api/resource?id=x&id=y&id=z
他们需要使用两种不同的资源方法:
@Get
public DTO getSingleDTO();
@Get
public List<DTO> getMultipleDTO();
是否可以将这两种方法放入单个restlet资源中?
我尝试使用@Get("?id")
,但这个注释并不是非常强大,在我的情况下无法使用。
实现此目的的最佳方法是什么?我不想为我拥有的每一种资源实施两个控制器。
答案 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
,如我所建议的那样