我有一个Spring Boot API,该API的端点提供分页。
@RequestMapping(path = "/most-popular", method = GET)
@Override
public List<RefinedAlbum> getMostPopularDefault() {
return albumService.getMostPopular(0, 25);
}
@RequestMapping(path = "/most-popular?offset={offset}&limit={limit}", method = GET)
@Override
public List<RefinedAlbum> getMostPopular(@PathVariable("limit") int limit, @PathVariable("offset") int offset) {
inputValidation(limit, offset);
return albumService.getMostPopular(limit, offset);
}
但是当我向以下服务请求时:
http://localhost:5250/api/v1/albums/most-popular?offset=100&limit=125
第一个函数被调用。我的理解是确切的匹配应该先于。那不对吗?
答案 0 :(得分:1)
以下网址中?
之后的内容无法使用@PathVariable
注释进行绑定:
http://localhost:5250/api/v1/albums/most-popular?offset=100&limit=125
您的路径仅为http://localhost:5250/api/v1/albums/most-popular
,其后的内容包括两个请求参数,即。 offset
和limit
。您可以使用@RequestParam
批注将请求参数绑定到控制器中的方法参数:
@RequestMapping(path = "/most-popular", method = GET)
@Override
public List<RefinedAlbum> getMostPopular (@RequestParam("limit") int limit,
@RequestParam("offset") int offset) {
inputValidation(limit, offset);
return albumService.getMostPopular(limit, offset);
}