135 lines
4.9 KiB
TypeScript
135 lines
4.9 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|||
|
|
import {
|
||
|
|
Http, Response, Headers, RequestOptions, URLSearchParams, RequestOptionsArgs, RequestMethod
|
||
|
|
} from '@angular/http';
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* http服务
|
||
|
|
*/
|
||
|
|
@Injectable()
|
||
|
|
export class HttpService {
|
||
|
|
|
||
|
|
constructor(private http: Http) {}
|
||
|
|
|
||
|
|
public request(url: string, options: RequestOptionsArgs, success: Function, error: Function): any {
|
||
|
|
// this.spinService.spin(true);
|
||
|
|
this.http.request(url, options).subscribe(res => {
|
||
|
|
// this.spinService.spin(false);
|
||
|
|
success(res.ok, res.json(), res);
|
||
|
|
}, err => {
|
||
|
|
// this.spinService.spin(false);
|
||
|
|
//处理请求失败
|
||
|
|
let msg = this.requestFailed(url, options, err);
|
||
|
|
error(err.ok, msg, err);
|
||
|
|
});
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
public get(url: string, paramMap: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Get,
|
||
|
|
search: HttpService.buildURLSearchParams(paramMap)
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public post(url: string, body: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Post,
|
||
|
|
body: body,
|
||
|
|
headers: new Headers({
|
||
|
|
'Content-Type': 'application/json; charset=UTF-8'
|
||
|
|
})
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public postFormData(url: string, paramMap: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Post,
|
||
|
|
search: HttpService.buildURLSearchParams(paramMap).toString(),
|
||
|
|
headers: new Headers({
|
||
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
||
|
|
})
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public put(url: string, body: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Put,
|
||
|
|
body: body
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public delete(url: string, paramMap: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Delete,
|
||
|
|
search: HttpService.buildURLSearchParams(paramMap).toString()
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public patch(url: string, body: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Patch,
|
||
|
|
body: body
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public head(url: string, paramMap: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Head,
|
||
|
|
search: HttpService.buildURLSearchParams(paramMap).toString()
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
public options(url: string, paramMap: any = null, success: Function=function(successful, data, res){}, error: Function=function(successful, msg, err){}): any {
|
||
|
|
return this.request(url, new RequestOptions({
|
||
|
|
method: RequestMethod.Options,
|
||
|
|
search: HttpService.buildURLSearchParams(paramMap).toString()
|
||
|
|
}), success, error);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 将对象转为查询参数
|
||
|
|
* @param paramMap
|
||
|
|
* @returns {URLSearchParams}
|
||
|
|
*/
|
||
|
|
private static buildURLSearchParams(paramMap): URLSearchParams {
|
||
|
|
let params = new URLSearchParams();
|
||
|
|
if (!paramMap) {
|
||
|
|
return params;
|
||
|
|
}
|
||
|
|
for (let key in paramMap) {
|
||
|
|
let val = paramMap[key];
|
||
|
|
// if (val instanceof Date) {
|
||
|
|
// val = Utils.dateFormat(val, 'yyyy-MM-dd hh:mm:ss')
|
||
|
|
// }
|
||
|
|
params.set(key, val);
|
||
|
|
}
|
||
|
|
return params;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 处理请求失败事件
|
||
|
|
* @param url
|
||
|
|
* @param options
|
||
|
|
* @param err
|
||
|
|
*/
|
||
|
|
private requestFailed(url: string, options: RequestOptionsArgs, err) {
|
||
|
|
let msg = '请求发生异常', status = err.status;
|
||
|
|
if (status === 0) {
|
||
|
|
msg = '请求失败,请求响应出错';
|
||
|
|
} else if (status === 404) {
|
||
|
|
msg = '请求失败,未找到请求地址';
|
||
|
|
} else if (status === 500) {
|
||
|
|
msg = '请求失败,服务器出错,请稍后再试';
|
||
|
|
} else {
|
||
|
|
msg = "未知错误,请检查网络";
|
||
|
|
}
|
||
|
|
|
||
|
|
return msg;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|