import { Injectable } from '@angular/core';
import {Http, Response, Headers, RequestOptions} from "@angular/http";
import 'rxjs/Rx';
import {Observable} from "rxjs";
import {Post} from "./http/post.class";
@Injectable()
export class HttpService {
constructor(private http: Http) { }
private requestUrl: string = 'http://localhost:4000/posts';
//Do all methods and observable options
getData(id : number) : Observable<Post> {
return this.http.get(${this.requestUrl}/${id} )
.map(this.mapResponse)
.catch(this.handleError)
}
handleError(error: any): Observable<any> {
console.error('An error occurred', error);
return Observable.throw(error.json() || 'Server error');
}
mapResponse(response : Response) : Post {
return response.json();
}
addData(body : Post) : Observable<Post> {
let bodyString = JSON.stringify(body);
let header = new Headers({
'Content-Type' : 'application/json'
});
let options = new RequestOptions({
headers : header
});
return this.http.post(${this.requestUrl} , bodyString, options)
.map(this.mapResponse)
.catch(this.handleError);
}
updateData(body : Post) : Observable<Post> {
let bodyString = JSON.stringify(body);
let header = new Headers({
'Content-Type' : 'application/json'
});
let options = new RequestOptions({
headers : header
});
return this.http.put(${this.requestUrl}/${body.id} , bodyString, options)
.map(this.mapResponse)
.catch(this.handleError);
}
deleteData(body : Post) : Observable<Post> {
return this.http.delete(${this.requestUrl}/${body.id} )
.map(this.mapResponse)
.catch(this.handleError);
}
}
|