我有一个@RestController
允许使用一些@RequestParam
参数和2个@RequestPart
参数进行POST,以便能够在服务层中创建需要一些输入+2个文件的对象像这样:
@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity createBook(@RequestParam("authorId") UUID authorId,
@RequestParam("pages") int pages,
@RequestParam("rating") BookRating rating,
@RequestPart("file") MultipartFile file,
@RequestPart("file2") MultipartFile file2) {
我想创建一个封装所有这些参数的对象,所以我可以这样做:
public ResponseEntity createBook( CreateBookParameters params ) {
我该怎么做?我需要在控制器中使用什么注释?我需要在CreateBookParameters
中使用任何注释,还是这是一个简单的POJO?
如果我做了这些更改,我是否需要更改我的请求(我正在使用" form-data"在Postman中设置)?
答案 0 :(得分:1)
您是否尝试过Spring的默认反射行为?试试这个:
public class CreateBookParameters {
private UUID authorId;
private int pages;
private BookRating rating;
private MultipartFile file;
private MultipartFile file2;
// add getters & setters for each
}
@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity createBook(CreateBookParameters p) {
// ...
}
答案 1 :(得分:0)
另一种选择是查看@RequestBody注释,看看是否可以使用它。