Skip to content

Instantly share code, notes, and snippets.

@vrkansagara
Forked from bbogdanov/http-client.ts
Last active July 12, 2022 04:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vrkansagara/54cce9dec6fb9a5d1937f201116171ba to your computer and use it in GitHub Desktop.
Save vrkansagara/54cce9dec6fb9a5d1937f201116171ba to your computer and use it in GitHub Desktop.
Extending Angular HttpClient
import {HttpClient, HttpErrorResponse, HttpHeaders, HttpParams} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs/Observable';
export interface IRequestOptions {
headers?: HttpHeaders;
observe?: 'body';
params?: HttpParams;
reportProgress?: boolean;
responseType?: 'json';
withCredentials?: boolean;
body?: any;
}
export function applicationHttpClientCreator(http: HttpClient) {
return new ApplicationHttpClient(http);
}
@Injectable()
export class ApplicationHttpClient {
private api = 'https://someurl.example';
// Extending the HttpClient through the Angular DI.
public constructor(public http: HttpClient) {
// If you don't want to use the extended versions in some cases you can access the public property and use the original one.
// for ex. this.httpClient.http.get(...)
}
/**
* GET request
* @param {string} endPoint it doesn't need / in front of the end point
* @param {IRequestOptions} options options of the request like headers, body, etc.
* @returns {Observable<T>}
*/
public Get<T>(endPoint: string, options?: IRequestOptions): Observable<T> {
return this.http.get<T>(this.api + endPoint, options);
}
/**
* POST request
* @param {string} endPoint end point of the api
* @param {Object} params body of the request.
* @param {IRequestOptions} options options of the request like headers, body, etc.
* @returns {Observable<T>}
*/
public Post<T>(endPoint: string, params: Object, options?: IRequestOptions): Observable<T> {
return this.http.post<T>(this.api + endPoint, params, options);
}
/**
* PUT request
* @param {string} endPoint end point of the api
* @param {Object} params body of the request.
* @param {IRequestOptions} options options of the request like headers, body, etc.
* @returns {Observable<T>}
*/
public Put<T>(endPoint: string, params: Object, options?: IRequestOptions): Observable<T> {
return this.http.put<T>(this.api + endPoint, params, options);
}
/**
* DELETE request
* @param {string} endPoint end point of the api
* @param {IRequestOptions} options options of the request like headers, body, etc.
* @returns {Observable<T>}
*/
public Delete<T>(endPoint: string, options?: IRequestOptions): Observable<T> {
return this.http.delete<T>(this.api + endPoint, options);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment