2017-04-05 20 views
1

我有以下两个查询:多个GET方法单一的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

我不知道你的模型,但是从我所看到的,我会用一个路由和单一资源的方法去:在应用程序类

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我建议

相关问题