2014-03-25 34 views
1

我的現有代碼的形式路徑變量的數量低於:無限在一個URI模板

@RequestMapping(value = "/{id}/{type}/{answer}", method = RequestMethod.GET) 
@ResponseBody 
public Results answer(@PathVariable("id") int questionId, 
     @PathVariable int type, 
     @PathVariable Boolean answer) { 

     //do something 
} 

我希望能夠加入到製作與路徑變量的任意號碼的請求的能力,但保持與上述相同的模式(即/id/type/answer/id/type/answer/id/type/answer/...etc。)。

所以最好我想能夠創建一個API調用,可以同時支持以下網址:

http://www.example.com/sendAnswer/id1/typeA/0

http://www.example.com/sendAnswer/id1/typeA/0/id2/typeB/1/id3/typeA/0

有沒有人有什麼想法?

+0

我們剛剛搬進從查詢字符串參數了。所以我們希望保留路徑​​變量。是的,唯一具有多個值的變量將成爲答案路徑變量......我們將爲答案做一個逗號分隔列表。 – user3461298

+0

非常理想,我希望能夠創建可支持以下兩個URL的API調用:http://www.example.com/sendAnswer/id1/typeA/0 AND http://www.example.com/ sendAnswer/id1/typeA/0/id2/typeB/1/id3/typeA/0 @ShaunScovil – user3461298

+0

我不認爲可以用'@ PathVariable'來完成,它使用'PathVariableMethodArgumentResolver'來解決它的值。您可以通過擴展它或子類AbstractNamedValueMethodArgumentResolver來實現自己的'ArgumentResolver'。 – Bart

回答

0

根據您的意見,考慮建立兩個端點:

/{id}/{type}/{answerId}返回一個明確的答案。

/{id}/{type}/answers返回所有答案的數組。

您確實應該使用查詢參數來篩選結果,以檢索多個答案。事情是這樣的:

/{id}/{type}/answers?ids=1,2,3&types=A,B,C

+0

你的兩個端點將是一個恐怖的地圖適當。如何決定使用哪種模式? – Bart

+0

@Bart很好。意思是爲第二個端點說'/ {id}/{type}/answers'。我相應地編輯了我的答案。 –