2016-12-12 2 views
0

Я закончил учебное руководство по angular2 heroies https://angular.io/docs/ts/latest/tutorial/, и теперь я пытаюсь вызвать RAL REST api, который я сделал с помощью Node, Postgresql и Express.Вызов REST api из angular2

angular2 код вызова API выглядит следующим образом:

...

export class HeroService{ 

    private heroesUrl = 'http://192.168.4.13:3000/api/boxes'; //URL til api 
    private headers = new Headers({'Content-Type': 'application/json'}); 
    constructor(private http: Http) {} 

    getHeroes(): Promise<Hero[]> { 
    return this.http.get(this.heroesUrl) 
    .toPromise() 
    .then(response => response.json().data as Hero[]) 
    .catch(this.handleError); 
    } 

...

Консоль браузер показывает: произошло

Ошибка ответа {_body : Object, status: 404, ok: false, statusText: «Not Found», headers: Headers ...} ИСКЛЮЧЕНИЕ: Недоступно (в обещании): Ответ со статусом: 404 Не F ound для URL: нулевой

Picture from REST API

И я вижу, что мой API isen't называют. Любые идеи тому, что я упускаю?

С уважением.

+1

Сообщение об ошибке указывает на неправильный URL-адрес, т. Е. Возвращает '404'. Если вы также пытаетесь вызвать '.json()' на 'response', то он будет терпеть неудачу, потому что контент не JSON. Каков URL-адрес API, который вы пытаетесь вызвать? Как вы определили этот API на стороне сервера? –

+0

К сожалению, API недоступен публике, но я обновил свой пост с изображением, чтобы вы могли видеть структуру результата из API. – Tony

+0

Это может быть глупо, но попытались ли вы удалить часть 'http: //' из URL? Кроме того, вы можете открыть консоль браузера, выбрать вкладку сети и обновить страницу, на которой вы ожидаете, что это будет вызвано. Это может помочь лучше понять проблему. –

ответ

1

Я figurd, что мне нужно, чтобы удалить эти строки для бэкенда называться:

// Imports for faking the http service - in-memory web api 
import { InMemoryWebApiModule } from 'angular-in-memory-web-api'; 
import { InMemoryDataService } from './in-memory-data.service'; 

Я думал, что Angular2 будет игнорировать их, когда не используется, но вызвал новый бэкэнд API не является называется.