我对node和Here API非常陌生,我尝试使用Here地理编码API从地址获取点的地理位置。
当我发送请求时(如下面的代码所示),我得到了一些响应,但有时它与我从postman那里得到的响应不同,即使端点和参数相同。
例如,对于地址100rue andrédubois,Paris,我通过axios发送的请求路径是/v1/geocode?apikey=&q= 100 + rue + André+Dubois,++Paris+返回一个空数组,但在邮递员https://geocode.search.hereapi.com//v1/geocode?apikey=<MY KEY>&q=100+rue+André+Dubois,++Paris+
上返回一项。
是我在实现中做错了什么,还是axios/node和postman之间有区别?
var axios = require('axios');
var baseUrl = "https://geocode.search.hereapi.com/v1/geocode";
var login = "?apikey=<MY KEY>";
var qualified = "&qq=";
//list of the adresses we want to geocode
var addresses = [
{
city: "CAUSSADE",
postalCode: "85300",
street: "impasse de meaux",
houseNumber: "538",
format:"FR"
},
{
city: "Paris",
street: "rue André Dubois",
houseNumber: "100",
format: "FR"
}
];
//return the value if exist, empty string otherwise
var NonNull = function(value) {
return value == null ? '' : value;
}
//format the request in case of a free text query
var freeText = function (address) {
var formattedAddress = '&q=';
formattedAddress += NonNull(address.houseNumber) + " " + NonNull(address.street) + ", " + NonNull(address.postalCode) + " " + NonNull(address.city) + " " + NonNull(address.country);
return formattedAddress.replace(/ /gi, "+");
}
//create request for qualified and free text. Display then the result.
var createRequest = function () {
var requests = [];
addresses.forEach(address =>
axios.get(baseUrl + login + freeText(address))
.then(response => {printResponse(response);})
);
}
// display response
var printResponse = function(response) {
console.log(response.request.path);
console.log(response == null ? "response: undefined" : "response: " + JSON.stringify(response.data));
}
createRequest();
转载请注明出处:http://www.cpss-cn.com/article/20230526/2505660.html