2017-04-05 45 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我建議

相關問題