Jim*_*m C 14 java rest spring spring-mvc spring-data-rest
我按照这个例子,它允许发布一个唯一的Person
对象.我想一个REST服务,我可以张贴的集合Person
一次,如列表/名为任何集合Team
众多Person
只在一个通话对象.
我的意思是,我的问题并不完全是关于OneToMany
你在REST请求中发送每个人的关系.本主题很好回答.
我想发送一组Person
利用@RepositoryRestResource
Spring Data Rest的其他功能的对象.这是否可以使用Spring Data Rest或者我应该通过创建控制器来解决,接收列表并解析Team
列表以插入每个Person
?
我发现了这个功能请求,似乎回答说现在Spring Rest Data缺少我想要的东西,但我不确定.
在我的业务需求中,应用程序A会将一个订单列表发布到应用程序B,我必须将其保存在数据库中以供将来处理,因此,在阅读了Spring Data Rest并制作了一些示例后,我发现它的干净架构非常棒且非常适合对于我的要求,除了我没有弄清楚如何发布列表的事实.
use*_*095 13
那么,AFAIK你不能用Spring数据休息那样做,只需阅读文档,你会看到,没有提到将列表发布到集合资源.
其中的原因尚不清楚,但一方面 - REST本身并未真正指定您应如何进行批处理操作.所以不清楚应该如何处理该功能,比如你应该将列表发布到收集资源吗?或者,您是否应该导出资源/someentity/batch
,以便能够在一个批次中修补,删除和添加实体?如果你要添加列表,你应该如何返回ID?对于单个POST到集合,spring-data-rest在Location头中返回id.对于批量添加,这是不可能的.
这并不能证明spring-data-rest缺少批处理操作.他们应该实施这个恕我直言,但至少它可以帮助理解为什么他们可能会错过它.
我可以说的是,你总是可以将你自己的Controller添加到可以正确处理/ someentity/batch的项目中,你甚至可以从中创建一个库,这样你就可以在另一个项目中使用它.或者甚至fork spring-data-rest并添加此功能.虽然我试图了解它是如何工作的并且到目前为止失败了.但你可能知道这一切,对吧?
根据user1685095的 答案,您可以制作自定义控制器PersonRestController
并公开帖子,collection of Person
因为它似乎尚未公开。Spring-date-rest
@RepositoryRestController
@RequestMapping(value = "/persons")
public class PersonRestController {
private final PersonRepository repo;
@Autowired
public AppointmentRestController(PersonRepository repo) {
this.repo = repo;
}
@RequestMapping(method = RequestMethod.POST, value = "/batch", consumes = "application/json", produces = "application/json")
public @ResponseBody ResponseEntity<?> savePersonList(@RequestBody Resource<PersonWrapper<Person>> personWrapper,
PersistentEntityResourceAssembler assembler) {
Resources<Person> resources = new Resources<Person>(repo.save(personWrapper.getContent()));
//TODO add extra links `assembler`
return ResponseEntity.ok(resources);
}
Run Code Online (Sandbox Code Playgroud)
}
要修复的PersonWrapper:
无法以[来源:java.io.PushbackInputStream@3298b722; 行:1,列:1]
更新资料
public class PersonWrapper{
private List<Person> content;
public List<Person> getContent(){
return content;
}
public void setContent(List<Person> content){
this.content = content;
}
}
public class Person{
private String name;
private String email;
// Other fields
// GETTER & SETTER
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6729 次 |
最近记录: |