java - Spring - 两种不同的 POST 方法,具有相同的 URL,但生成的内容类型不同

标签 java spring spring-boot spring-mvc

我有以下 Controller :

@RequiredArgsConstructor
@RestController
public class OwnerViewController implements ApiOwnerViewController {

    private static final String TEXT_CSV = "text/csv";

    private final PrivateOwnerFacade privateOwnerFacade;

    @PostMapping("/boat/v1/private-owners/search")
    public OwnerViewResponse searchOwners(@Valid @RequestBody SearchOwnersRequest request,
                                          Pageable pageable) {
        return privateOwnerFacade.findOwners(request, pageable);
    }

    @PostMapping(value = "/boat/v1/private-owners/search", produces = TEXT_CSV)
    public ResponseEntity<Resource> exportToCsv(@Valid @RequestBody SearchOwnersRequest request, Pageable pageable)
            throws IOException {

因此,我有两个方法映射到同一网址,并且都接受 POST 请求,但生成不同的内容类型 - 第一个生成 application/json,而第二个生成 text/csv.

然后,当我尝试发出请求并设置 header 时 接受:text/csv 我从服务器收到 406。

我想知道用spring真的可以做这样的事情吗?或者是更改第二个方法以使其接受 GET 请求的唯一方法?

谢谢

最佳答案

@RequiredArgsConstructor
@RestController
public class SearchController {

    @PostMapping(value = "/search", produces = {APPLICATION_JSON})
    public SearchResponse search(@Valid @RequestBody SearchRequest request,
                                          Pageable pageable) {
    }

    @PostMapping(value = "/search", produces = {TEXT_CSV})
    public ResponseEntity<Resource> export(@Valid @RequestBody SearchRequest request, Pageable pageable) throws IOException {

    }


}

关于java - Spring - 两种不同的 POST 方法,具有相同的 URL,但生成的内容类型不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113230/

相关文章:

java - 使用 Selenium 检查元素是否被禁用

java - 在Java中,验证带有@NonNull注释的属性的对象的最佳方法

java - 由于 firebase sdk 依赖性,构建失败

java - 无法在 spring boot 中获取用户名

java - 所有测试都在 Intellij 中使用 Spring Boot 和 JUnit5 终止

java - 列出目录中的所有文件夹,即使添加新文件也不更改顺序

java - 我不能在 Android 中使用 getResource().getString

java - 如何使用Java从Windows Vault中检索用户名和密码?

java - PathMatchingResourcePatternResolver 返回的资源可以是 "directory"。如何避免

java - 如何在没有@Id的情况下使用spring Repository?