java - Spring - 两种不同的 POST 方法,具有相同的 URL,但生成的内容类型不同
问题描述
我有以下控制器:
@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 {
所以我有两个方法映射到同一个 url,并且都接受 POST 请求但产生不同的内容类型 - 第一个产生application/json
,而第二个产生text/csv
。
然后,当我尝试发出请求并设置标头时,
Accept: 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 {
}
}
推荐阅读
- executorservice - 向 Executorservice 发送多种类型的 Runnable Tasks
- javascript - Webpack 突然无法编译,内部出现错误
- git - GIT:在单个仓库中处理同一软件的多个变体
- sql - SQL中的转换日期
- c# - 尝试在 C# 中增加变量时 ++i“在当前上下文中不存在”
- c# - 检查实现 IEqualityComparer 的类的空相等性的干净方法是什么
? - oracle - Documentum 字符串属性是哪个oracle 数据类型?
- r - drc 软件包安装问题,drm 错误
- c# - 按行项目条件更改 MudBlazor 表格背景颜色
- sql - 将所有列名更改为小写 Postgresql