GET请求传递Payload失效求助:调用第三方API遇404错误
解决GET请求404但Postman正常返回数据的问题
问题场景
我之前碰到过一个挺折腾的问题:对接第三方API时,在Postman里用GET请求带查询字符串能正常拿到JSON格式的返回结果,但用React的fetch实现时,却一直收到404错误。我的代码是这样写的:
const getDescription = async (string) => { const response = await fetch("/rank/" + string, { method: "GET", headers: { Accept: "application/json", "Content-Type": "application/json", }, }); console.log(response); }; useEffect(() => { getDescription("hello"); }, []);
返回的响应状态码是404,请求URL是http://localhost:3000/rank/hello,响应体是ReadableStream。
可能的原因排查
后来梳理了几个可能的问题点:
- 参数传递格式不符:第三方API的GET请求可能要求参数通过查询字符串(比如
/rank?keyword=hello)传递,而不是像我那样直接拼在路径里(/rank/hello),这种路径参数的方式不符合API的路由规则。 - 本地代理配置问题:本地开发时,如果前端请求需要通过代理转发到第三方API,代理配置可能没正确匹配
/rank/xxx这类路径,导致请求落到了本地服务器的路由上,自然返回404。 - 多余请求头干扰:GET请求通常不需要设置
Content-Type头(因为GET没有请求体),Postman里默认不会带这个头,而我代码里加了这个头,可能导致API无法正确识别请求。
我的最终解决方式
当时尝试调整参数传递方式、移除多余请求头都没解决问题,最后和第三方API提供者沟通后,让他们新增了POST请求的接口,改用POST传递参数后,就正常获取到数据了。
内容的提问来源于stack exchange,提问作者yudhiesh
相关产品推荐
相关产品推荐

