如何编写API请求查询字符串,解决WeatherAPI城市查询报错及获取城市列表问题
问题1:如何正确将城市参数放入查询字符串
你遇到的错误码1006是API的官方错误定义,代表传入的位置查询参数无匹配结果,结合你city变量为undefined的情况,按以下步骤修复即可:
- 先增加入参合法性校验,避免空参数调用API,同时对城市名做URL编码,解决中文/特殊字符导致的URL解析错误:
修改后代码如下:export default async function handler(req, res) { const city = req.query.city; // 新增非空校验,无城市参数直接返回错误 if (!city || typeof city !== 'string' || city.trim() === '') { return res.status(400).json({ error: "请传入有效的城市参数" }); } // 对城市名做URL编码,避免中文、空格等特殊字符导致的查询异常 const encodedCity = encodeURIComponent(city.trim()); const getWeatherData = await fetch( `https://api.weatherapi.com/v1/forecast.json?key=${process.env.WEATHER_API_KEY}&q=${encodedCity}&days=5&aqi=no&alerts=no` ); const data = await getWeatherData.json(); res.status(200).json(data); } - 调用该接口时必须携带合法的city查询参数,例如请求路径格式为
/你的接口路径?city=上海,确保传入的城市名拼写正确,该API同时支持中文名、拼音名、经纬度、邮编作为查询参数。
问题2:该API是否支持获取全量城市列表
该API不提供全量城市列表的查询接口,文档中提到的location对象是单次位置查询的返回字段,仅返回当前查询位置的相关信息。如果需要实现城市选择功能,你可以自行整理常用城市列表供用户选择,选中后再传入对应参数调用天气查询接口即可。
内容的提问来源于stack exchange,提问作者Katharina Schreiber
相关产品推荐
相关产品推荐

