我尝试按照这些指令进行操作,但无法解码uri。我该怎么办?
当我进入一个像这样的城市 http://localhost:5000/weather?weatherCity=Malmö
url将更改为此 http://localhost:5000/weather?weatherCity=Malm%C3%B6
,我如何解码最后一部分,我做错了什么?
app.get('/weather', (req, res) => {
const weatherCity = (req.query.weatherCity)
let decodeURI = decodeURIComponent(weatherCity) //<------- trying to decode the query
request(weatherURL(decodeURI), function (error, response, body) {
if (error) {
throw error
}
const data = JSON.parse(body)
return res.send(data)
});
})
function weatherURL(weatherCity){
return `https://api.openweathermap.org/data/2.5/weather?q=${weatherCity}&units=metric&appid=${process.env.APIKEY}&lang=en`
}
1条答案
按热度按时间ki0zmccv1#
这可能是您需要的:
应该不需要解码
req.query.weatherCity
因为express会自动执行此操作。在使用weathercity创建url之前,您确实需要对其进行编码。url查询参数应为url编码。
考虑使用别的东西
request
因为它已被弃用,不支持承诺。node-fetch
及axios
,以及其他,都是不错的选择。