调用Google Places API fetch返回200状态码但无有效数据求助
问题排查与解决方案
你当前获取到的是Fetch API返回的标准Response元数据,HTTP层面请求已经成功(状态码200、ok字段为true可证明),你没有拿到预期的地点搜索结果是因为没有正确解析响应体中的业务数据,直接序列化整个Response对象只会输出元属性,不会包含接口返回的实际内容。
修复代码示例
const response = await fetch( // 注意:之前注释的location参数写法错误,分隔符应该是%2C而非%,正确写法为${latitude}%2C${longitude} `https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&key=${apiKey}`, {} ); // 先校验HTTP请求状态 if (!response.ok) { throw new Error(`HTTP请求异常,状态码:${response.status}`); } // 解析响应体JSON,这才是Places API返回的实际业务数据 const placeData = await response.json(); console.log("TEST: 地点接口返回实际内容 ", placeData); // 优先查看业务状态码判断接口调用是否正常 console.log("Places API业务状态:", placeData.status);
异常场景排查步骤
如果解析后业务状态码不为OK,可根据返回的状态码对应排查:
REQUEST_DENIED:检查API Key是否填写正确,确认Google开发者控制台中该Key对应的Places API已启用,同时检查Key的访问限制(IP、应用包名、域名限制)是否和你当前的运行环境匹配INVALID_REQUEST:检查请求参数格式是否正确,重点注意location参数的经纬度之间需要用url编码后的逗号%2C分隔,不要遗漏2C字符OVER_QUERY_LIMIT:确认当前账号的Places API调用配额是否耗尽,或者是否触发了速率限制ZERO_RESULTS:当前搜索条件无匹配结果,属于正常业务返回,可调整搜索关键词、半径等参数重试
内容的提问来源于stack exchange,提问作者Lev Martens
相关产品推荐
相关产品推荐

