2016-09-26 6 views
4

У меня есть спокойный веб-сервис с поддержкой ссылок HATEOAS. Когда я звоню "http://localhost:8080/v1/bookings/1225380?lock=true" link Я получил следующие URL ресурсов. Я хочу интегрировать эти Hypermedia с моим приложением Angular2 (недавно обновленным до окончательной версии). Я нашел несколько ресурсов, которые были реализованы с помощью Angular1 при поддержке Angular 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); 
} 

}

Обеспечить этот инжектор и добавить его в конструктор, где вам нужно это

constructor(private hypermedia:Hypermedia) 

Тогда вы можете просто назвать это, как вы это обычно называем класс HTTP

this.hypermedia.get(myHypermediaLinksArray,myRel) 

Надеюсь, что это поможет :)