我@Entity
名为Scenario
。我有一个@Repository
和spring数据休息,它为CRUD操作生成MVC控制器。路径为/api/scenarios
。的工作原理。
我希望能够POST
/api/scenarios
端点不仅可以使用默认的JSON,还可以使用multipart/form-data
,因此我可以从文件中创建Scenario
用户上传。我尝试创建自定义@Controller
:
@RestController
public class ImportController {
@ResponseStatus(HttpStatus.CREATED)
@RequestMapping(value = "/api/scenarios", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Void> uploadScenario(@RequestPart(name = "scenario") MultipartFile scenarioFile) {
...
}
}
这样,multipart/form-data
的上传工作正常,但我无法再使用GET
访问该点。我的方法不允许。就像我的自定义控制器隐藏了由spring数据休息生成的控制器一样。
有没有办法在现有控制器之上添加这样的自定义POST
,以便我可以使用JSON和application / form-data mime类型创建Scenario
?
答案 0 :(得分:1)
您需要将此自定义控制器指定为存储库控制器,而不是将自定义方法添加到生成的控制器。
请注意,您无需在控制器映射中添加api基本路径。因此,此处的映射为"/scenarios"
,而不是"/api/scenarios"
@RepositoryRestController
@RequestMapping("/scenarios")
public class ImportController {
@ResponseStatus(HttpStatus.CREATED)
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Void> uploadScenario(@RequestPart(name = "scenario") MultipartFile scenarioFile) {
...
}
}