创建具有自定义mime类型的实体作为spring数据rest控件的添加

时间:2017-08-16 20:14:26

标签: spring-mvc spring-data-rest

@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

1 个答案:

答案 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) {
        ...
    }
}