Spring Boot @RequestMapping 是否完全匹配请求?

我有一个 Spring Boot 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

第一个函数被调用。我的理解是应该先进行精确匹配。那不正确吗?


胡子哥哥
浏览 228回答 1
1回答

慕无忌1623718

?以下 URL 中的之后的内容不能使用@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)@Overridepublic List<RefinedAlbum> getMostPopular (@RequestParam("limit") int limit,&nbsp;&nbsp; &nbsp;@RequestParam("offset") int offset) {&nbsp; &nbsp;inputValidation(limit, offset);&nbsp; &nbsp;return albumService.getMostPopular(limit, offset);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java