import { Injectable, isDevMode } from '@angular/core'; import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http'; import { environment } from '../../environments/environment'; import { Observable } from 'rxjs'; @Injectable() export class HttpService { requestURL = environment.ApiBase; token = sessionStorage.getItem('adal.access.token.key'); httpOptions: any = { headers: new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8', 'Authorization': 'Bearer ' + this.token }) }; constructor( private http: HttpClient ) { } private urlFactory(resourceKey: string): string { return `${this.requestURL}${resourceKey}`; } private paramsFactory(params: any): HttpParams { let para = new HttpParams(); Object.keys(params).forEach( key => para = para.append(key, params[key])); return para; } get(resourceKey: string, parameters: any): Observable<any> { const url = this.urlFactory(resourceKey); const params = this.paramsFactory(parameters); return this.http.get( url, { headers: this.httpOptions.headers, params: params }); } post(resourceKey: string, body: any): Observable<any> { const url = this.urlFactory(resourceKey); return this.http.post(url, body, {headers: this.httpOptions.headers}); } put(resourceKey: string, body: any): Observable<any> { const url = this.urlFactory(resourceKey); return this.http.put(url, body, {headers: this.httpOptions.headers}); } delete( resourceKey: string, parameters: any): Observable<any> { const url = this.urlFactory(resourceKey); const params = this.paramsFactory(parameters); return this.http.delete(url, { headers: this.httpOptions.headers, params: params }); } }
調用部分:json
import { Injectable, Type } from '@angular/core'; import { HttpService } from './http.service'; @Injectable() export class CmapActionsService { constructor(private http: HttpService) { } public getDropDownList() { return this.http.get('DropDown', {}); } public getActionById(id: number, eid: string) { return this.http.get('ActionItem/getactionitembyid', { id: id, eid: eid }); } public addAction(action: any) { return this.http.post('ActionItem', action); } public removeAction(actionID: number) { return this.http.delete('ActionItem', { actionID: actionID }); } }