创建具有自定义 MIME 类型的实体作为 spring 数据休息控制器的补充
Create entities with custom mime type as addition to spring data rest controller
我有 @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
访问 enpoint。我收到 不允许的方法。就像我的自定义控制器隐藏了由 spring 数据 rest.
生成的控制器一样
有没有办法在现有控制器上添加这样的自定义 POST
,这样我就可以用 JSON 和 application/form-data mime 创建我的 Scenario
s类型?
您需要将此自定义控制器指定为 存储库控制器 ,然后 Spring 会将您的自定义方法添加到生成的控制器中。
请注意,您不需要将 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) {
...
}
}
我有 @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
访问 enpoint。我收到 不允许的方法。就像我的自定义控制器隐藏了由 spring 数据 rest.
有没有办法在现有控制器上添加这样的自定义 POST
,这样我就可以用 JSON 和 application/form-data mime 创建我的 Scenario
s类型?
您需要将此自定义控制器指定为 存储库控制器 ,然后 Spring 会将您的自定义方法添加到生成的控制器中。
请注意,您不需要将 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) {
...
}
}