2017-09-02 82 views
0

我想要拿出正確的方法來創建一個終點,給出選項來創建一個單一的對象或它的列表。 我使用彈簧引導框架。我如何提供具有相同終點的兩個選項?也是用相同的端點名稱來完成它的正確方法?批量創建與春季啓動api

謝謝!

@RequestMapping(value = "/persons", method = RequestMethod.POST) 
public void save(@RequestBody() final Person person) 

@RequestMapping(value = "/persons", method = RequestMethod.POST) 
public void save(@RequestBody() final List<Person> persons) 

回答

0

你可以把單一的對象作爲一個元素的列表,並保持這種處理方法。這對客戶來說有點難度,但如果他們不在乎,這是最簡單的選擇。否則,你可以接受請求主體作爲一個字符串,並試圖找出它是否意味着是一個單一的對象或列表,並採取相應的行動。

+0

我的意思是說這是一種或另一種方法,但不是兩種。 是的,可以使用一個列表,並且客戶端需要適應,但我會想象這是一個標準用例,並且必須有一個最佳實踐。 感謝您的幫助! –

+0

@SophianAchiba對此,沒有「最佳實踐」,因爲它不是一個設計模式問題,而是一個簡單的選擇問題。有一些使用URI模式和HTTP動詞和RMM的最佳實踐,其中沒有一個與您的問題相關。 [Martin Fowler](https://martinfowler.com/articles/richardsonMaturityModel.html)是REST API設計中最好的資源之一。至於你的情況,一個集合可以像一個單獨的對象一樣被當作一個資源,你的POST方法會在'Location'頭中返回新創建的URI。別客氣, –