2015-06-10 3 views
1

У меня есть служба Angular 1.4, которая делает запрос API MapQuest. Если я передаю свой API-ключ как часть URL-адреса напрямую, он работает, однако, если я добавлю его как часть поля params, то это не так.

Рабочие:

var url = 'http://open.mapquestapi.com/geocoding/v1/address?key=Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4'; 

$http.get(url); 

// Key actually sent 
Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4 

Не работает:

var url = 'http://open.mapquestapi.com/geocoding/v1/address'; 

$http.get(url, { 
    params: { 
    key: 'Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4' 
    } 
}); 

// Key actually sent 
Gmjtd%257Cluub2d08nh%252C2s%253Do5-su2gh4 

Не работает либо:

var url = 'http://open.mapquestapi.com/geocoding/v1/address'; 

$http.get(url, { 
    params: { 
    key: encodeURIComponent('Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4'); 
    } 
}); 

// Key actually sent 
Gmjtd%25257Cluub2d08nh%25252C2s%25253Do5-2u2gh4 

Оказывается, что передача ключа в params поле заставляет его пройти какое-то процесса кодирования, что делает его недействительным.

Как сохранить исходный ключ при использовании метода params?

ответ

1

Угловой действительно encode params. Вы должны позвонить decodeURIComponent, так как ключ уже закодирован.

$http.get(url, { 
    params: { 
    key: decodeURIComponent('Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4'); 
    } 
});