2016-12-07 62 views
6

我已經嘗試過像英雄之旅這樣的示例應用程序。HTTP獲取404未找到URL:null

正在嘗試服務CAL轉換爲hero.service.ts

import {Injectable} from '@angular/core'; 
import {HttpModule, Headers, Http} from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 

import {Hero} from './hero'; 

@Injectable() 
export class HeroService { 

    private heroesUrl = 'app/heroes'; 

    constructor(private http : Http) { } 

    // working code 
    //getHeroes(): Promise<Hero[]> { 
    // return Promise.resolve(HEROS); 
    //} 

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

    } 
    private handleError(error: any): Promise<any> { 
     console.error('An error occurred', error); // for demo purposes only 
     return Promise.reject(error.message || error); 
    } 
} 

內存,data.service.ts HTTP GET(InMemoryDbService)像下面

import {InMemoryDbService} from 'angular-in-memory-web-api'; 

    export class InMemoryDataService implements InMemoryDbService { 
    createDb() { 
     let heroes = [ 
      { id: 1, name: 'Thulasi' }, 
      { id: 2, name: 'Bala' }, 
      { id: 3, name: 'Thulasi' }, 
      { id: 4, name: 'Thulasi' }, 
      { id: 5, name: 'Thulasi' }, 
      { id: 6, name: 'Thulasi' }, 
      { id: 7, name: 'Thulasi' }, 
      { id: 8, name: 'Thulasi' }, 
      { id: 9, name: 'Thulasi' }, 
      { id: 10, name: 'Thulasi' }, 
      { id: 11, name: 'Thulasi' } 
     ]; 
     return heroes; 
    } 
} 

拋出錯誤:

hero-service.ts:25 An error occurred Response_body: Object 
    headers: Header 
    sok: false 
    status: 404 
    statusText: "Not Found" 
    type: null 
    url: null 
    __proto__: Body 
HeroService.handleError @ hero-service.ts:25 
    ZoneDelegate.invoke @ zone.js:232 
    onInvoke @ core.umd.js:5975 
    ZoneDelegate.invoke @ zone.js:231 
    Zone.run @ zone.js:114 
    (anonymous function) @ zone.js:502 
    ZoneDelegate.invokeTask @ zone.js:265 
    onInvokeTask @ core.umd.js:5966 
    ZoneDelegate.invokeTask @ zone.js:264 
    Zone.runTask @ zone.js:154 
    drainMicroTaskQueue @ zone.js:401 
    ZoneTask.invoke @ zone.js:339 
    core.umd.js:2837 EXCEPTION: Uncaught (in promise): Response with status: 404 Not Found for URL: null 
+0

您正在訪問的URL似乎不存在。您是否檢查過瀏覽器devtools中的錯誤消息或詳細說明了請求使用了哪個確切的URL,以及該URL是否有效? –

+0

你的URL看起來像是null(根據錯誤信息)。你可以調試和檢查,如果這是真的嗎? – Dinistro

回答

4

一兩件事,我看到的是,你的createDb()看起來並不像原來..

它返回的 「收藏品」 中的對象..

return {heroes};

我想這LIB需要這個對象來構建這些網址..

文檔:https://github.com/angular/in-memory-web-api

Hero-Tour:https://angular.io/docs/ts/latest/guide/server-communication.html#!#appendix-tour-of-heroes-in-memory-server

+0

在這種情況下,英雄對象周圍的{}語法意味着什麼(即時消息是新的打字稿)?感謝您的評論。我試圖返回英雄對象 –

+0

'return {heroes};'會導致'return {heroes:heroes};'。一個名爲'heroes'的屬性的對象。 – mxii