2016-09-26 8 views
4

私はHATEOASのリンクをサポートしています。 「http://localhost:8080/v1/bookings/1225380?lock=true」 というリンクには、以下のリソースURLがあります。私はこれらのHypermediaを私のAngular2アプリケーション(最近最終バージョンにアップグレード)と統合したいと思っています。私はAngular1で実装されたいくつかのリソースをAngal HAL(リンク-https://paulcwarren.wordpress.com/2015/04/03/role-based-spas-with-angularjs-and-spring-hateoas/https://github.com/LuvDaSun/angular-hal/tree/master/src)のサポートで見つけました。しかし、私はAngular2のリソースを見つけることができません。Angular2とHATEOASのサポート

"links": [ 
    { 
    "rel": "client", 
    "href": "http://localhost:8080/v1/clients/10000" 
    }, 
    { 
    "rel": "passengers", 
    "href": "http://localhost:8080/v1/bookings/1225380/passengers" 
    }, 
    { 
    "rel": "itinerary", 
    "href": "http://localhost:8080/v1/bookings/1225380/itinerary" 
    }, 
    { 
    "rel": "self", 
    "href": "http://localhost:8080/v1/bookings/1225380?lock=true" 
    }, 
    { 
    "rel": "clientBookingHistory", 
    "href": "http://localhost:8080/v1/bookings/1225380/clientBookingHistory/10000" 
    } 
] 

答えて

1

あなたはこのために注射を作成し、このクラスの代わりに、角度HTTPクラスを使用することができます。ここでリンクをフィルタリングし、httpを正しいリンクで呼び出すよりも、

@Injectable() 
export class Hypermedia { 

    constructor(private http: Http) { } 

    get(links: any[], rel: String, body?: any, options?: RequestOptionsArgs): Observable<Response> { 
    var link = null; 
    var request = null; 

    // Find the right link 
    links.forEach(function (_link) { 
     if (_link.rel === rel) { 
      link = _link 
      return; 
     } 
    }); 

    return this.http.get(link.href); 
} 

}

あなたは、通常のhttpクラスに

this.hypermedia.get(myHypermediaLinksArray,myRel) 
を呼び出すのと同じようそして、あなたは、単にそれを呼び出すことができ、このインジェクタを提供し、あなたが

constructor(private hypermedia:Hypermedia) 

それを必要とするコンストラクタに追加

希望するもの:

関連する問題