【发布时间】:2015-11-23 08:42:21
【问题描述】:
我想知道如何将 Spring Controller GET 请求映射到我的对象。
我有一种情况,我为单个搜索 API 启用了 GET 和 POST 请求。
我收到我的 POST api 作为 JSON 数据类型并使用
CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
将 json 转换为我的对象的策略。
这会在我的 Java modal 中将 date_to 字段转换为 dateTo。
但如果我通过 GET 收到相同的请求,我需要传递 dateTo 而不是 date_to。这给最终用户带来了很多困惑。
我正在寻找类似下面的东西
class MySearchRequestDTO{
private int start = 0;
private int count = 10;
@RequestAttribute(name="date_from")
private Date dateFrom;
@RequestAttribute(name="date_to")
private Date dateTo;
//Getters and Setters
}
控制器类
@RequestMapping(value = "/search", method = {RequestMethod.GET})
public ApiSuccessResponse aSearchGet(MySearchRequestDTO request) throws IMSException{
return new ApiSuccessResponse(inventoryService.aSearch(request));
}
@RequestMapping(value = "/search", method = {RequestMethod.POST})
public ApiSuccessResponse aSearchPost(@RequestBody MySearchRequestDTO request) throws IMSException{
return new ApiSuccessResponse(inventoryService.aSearch(request));
}
在这种情况下,在我的应用程序 url 类型中遵循相同名称策略的最佳方法是什么。让我知道是否有人以更好的方式解决了这个问题。
非常感谢您花时间阅读本文。
【问题讨论】:
-
为什么不随心所欲地更改变量名称?
-
我的模型使用骆驼大小写符号。我的 json 基于基于下划线的符号。我不喜欢在我的 java 类及其组织范围的标准中使用下划线符号,并决定使用 json 作为基于下划线的。如果我准备好使用这样的名字,我不会发布这个。
标签: java json spring spring-mvc httprequest