2017-09-02 119 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。别客气, –