Java调用Spotify API搜索端点返回400 Bad Request问题求助
Spotify API搜索端点调用400 Bad Request问题排查
直接梳理代码里的关键问题,这些都是触发400错误的核心原因:
1. GET接口用@RequestBody接收参数错误
你的/search接口是@GetMapping类型,但用@RequestBody接收q和type参数。GET请求默认没有请求体,前端传递的参数根本无法被正确解析,导致Spotify API收不到必要的搜索参数,直接返回400。
修复方式:把@RequestBody改成@RequestParam,让参数通过URL查询字符串传递:
@GetMapping("/search") public ResponseEntity<SearchResponse> search(@RequestParam String q, @RequestParam String type){ // 原逻辑保持不变 }
2. FeignClient的URL与请求路径重复带问号
你在@FeignClient的url里写了"https://api.spotify.com/v1/search?",又在@GetMapping里写了"?q={q}&type={type}",最终拼接出的URL会是https://api.spotify.com/v1/search??q=xxx&type=xxx,多了一个非法的问号,属于URL格式错误,触发400。
修复方式:去掉url末尾的问号,同时更推荐用@RequestParam传递参数(贴合Spotify API的查询参数设计):
@FeignClient( name = "SearchClient", url = "https://api.spotify.com/v1/search" ) public interface SearchClient { @GetMapping SearchResponse search(@RequestHeader("Authorization") String authorization, @RequestParam String q, @RequestParam String type); }
3. Token获取方法的拼写错误
代码里的getAcessToken()明显是拼写错误,正确写法应该是getAccessToken()(少了一个字母c)。如果方法名错误,你拿到的token会是null,Authorization头变成Bearer null,这也会导致Spotify API返回错误。
修复方式:检查LoginRequest对应的返回类,将token的getter方法修正为getAccessToken()。
额外建议
- 测试时可以打印最终请求的URL和Authorization头,确认参数和token都正确传递。
- 确认你的Spotify授权token拥有搜索接口的权限(Client Credentials流的token默认具备该权限,但仍需验证)。
内容的提问来源于stack exchange,提问作者Pedro Durand
相关产品推荐
相关产品推荐

