Я пытался получить REST API от Ensemble, работающего на Angular2, с использованием наблюдаемых. Я не уверен, в чем проблема. Вот как выглядит мой код (и ошибка прикреплена здесь http://pastebin.com/mSHEq43H)
Обратите внимание, что я добавил правильные заголовки. Чтобы проверить, мы можем изменить значение заголовка и увидеть, что мы получаем 415, если я изменю имя заголовка.
let header = new Headers();
header.append('Content-type', 'application/json');
this.http.get('http://rest.ensembl.org/lookup/id/ENSG00000157764?expand=0',
{
headers: header
})
.map((res: Response) => res.json())
.subscribe(
data => {
console.log('data');
this.data = data;
},
error => {
this.errorMessage = <any>error;
},
() => console.log('random look complete'));
Я также пробовал свой API только с заголовком Content-type, установленным как application/json на Postman, он работает без проблем, используя тот же идентификатор и заголовок.
Для дальнейшей отладки я использовал альтернативный API, который отлично работает.
this.http.get('http://jsonplaceholder.typicode.com/photos/1')
.map((res: Response) => res.json())
.subscribe(res => {
this.data = res;
this.errorMessage = false;
});
Я что-то упускаю?
Другие вопросы, которые у меня есть, заключаются в том, есть ли простой способ отладки наблюдаемых? Любой ресурс будет полезен.
Обновлять
Я понял, в чем проблема Angular 2 на RC5 (с окончательным релизом еще не проверял). http.get API имеет два параметра (url, RequestOptionsArg).
Если я использую RequestOptionsArg, то мне нужно передать ВСЕ параметры, даже тело, если оно было пустым.
В документации сказано, что если тело пусто, ему будет присвоено значение null или undefined. Однако API вызывает toString(), и я предполагаю, что нет проверок на нуль и, следовательно, проблема.