【发布时间】:2015-07-28 12:23:44
【问题描述】:
您好,我正在编写一个 REST 控制器并遇到一个有趣的问题
如果有控制器
@RequestMapping(value = "/test", method = RequestMethod.GET)
public ResponseEntity getAfterSalesFiles(@PathParam("store") final String store,
@PathParam("filter") final String filter,
@PathParam("sort") final Pageable pageable) {
System.out.println("filter " + filter);
System.out.println("page " + pageable.getPageNumber());
System.out.println("size " + pageable.getPageSize());
return new ResponseEntity<>(HttpStatus.OK);
}
当我执行以下 curl 命令时
curl localhost:8109/product/test?page=3&size=25&filter=cookies
我在控制台中得到以下信息
filter null
page 3
size 20
所以页面是正确的,大小和过滤器是错误的 如果我在url中交换变量,第一个参数是正确的,其他的都是错误的
编辑: 我也试过了
@RequestMapping(value = "/test", method = RequestMethod.GET)
public ResponseEntity getAfterSalesFiles(@RequestParam(value = "store") final String store,
@RequestParam(value = "filter") final String filter,
@RequestParam(value ="sort") final Pageable pageable) {
System.out.println("filter " + filter);
System.out.println("page " + pageable.getPageNumber());
System.out.println("size " + pageable.getPageSize());
return new ResponseEntity<>(HttpStatus.OK);
}
和卷曲
curl localhost:8109/product/test?filter=cookies&store=bavo&size=25&page=3
然后我得到以下输出
{"timestamp":1438087790411,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.MissingServletRequestParameterException","message":"Required String parameter 'store' is not present","path":"/product/test"}
对我有什么想法/如何调试它?
问候, 巴基尔
【问题讨论】:
-
你的意思是
@PathVariable,对吧? -
不,因为我没有像 localhost/{size} 那样将它编码在 URL 中,而是作为 localhost?size
-
那么它是
@RequestParam?@PathParam不是 Spring 注解... -
请阅读原始问题它已更新 0:)
标签: spring rest spring-boot