【发布时间】:2017-06-16 18:34:55
【问题描述】:
我正在使用 Spring-boot-starter-data-jpa,在我的 RestController 中我想返回新创建对象的位置。有没有办法逆转@RequestMapping,而不是硬编码如何构建 URL?
@RestController
@ExposesResourceFor(BookInstance.class)
public class BookInstanceController {
@RequestMapping(value="/bookInstances", method=RequestMethod.POST)
ResponseEntity<BookInstance> createBookInstance(@RequestBody BookInstance bookInstance){
BookInstance createdBookInstance = bookInstanceRepository.save(bookInstance);
return ResponseEntity.created(**reverseURL(createdBookInstance)**);
// return new ResponseEntity<BookInstance>(createdBookInstance, HttpStatus.CREATED);
// return createdBookInstance;
}
}
我总是看到人们在这个函数中硬编码他们的 URL 结构,这让我无话可说....
当然我在同一个类中也有一个 GET 函数(否则就没有什么可以反转了)
@RequestMapping(value="/bookInstances/{id}", method=RequestMethod.GET)
ResponseEntity<?> findOne(@PathVariable("id") Long id){
BookInstance bookInstance = bookInstanceRepository.findOne(id);
if(bookInstance == null){
return ResponseEntity.notFound().build();
}
return new ResponseEntity<BookInstance>(bookInstance, HttpStatus.OK);
}
【问题讨论】:
标签: spring spring-boot spring-data spring-data-rest spring-hateoas