You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:52:41