angular学习总结八-请求service封装
来源:互联网 发布:程序员软件工程师 编辑:程序博客网 时间:2024/06/03 20:19
import { Injectable, Injector, EventEmitter } from '@angular/core';import { Http, Response, Headers } from '@angular/http';import { URLSearchParams, Jsonp } from '@angular/http';import { Observable } from 'rxjs';@Injectable()export class RequestService { private http: Http; constructor( private injector: Injector ) { this.http = injector.get(Http); } private handleError(error: Response | any): boolean { console.error('baseService received request errorr'); console.log(error); let errMsg: string; if (error instanceof Response) { const body = error.json() || ''; const err = body.error || JSON.stringify(body); errMsg = `${error.status} - ${error.statusText || ''} ${err}`; } else { errMsg = error.message ? error.message : error.toString(); } Observable.throw(errMsg); return false; } private createRequstParam(data: any): any { const params = new URLSearchParams(); for (let key in data) { params.set(key, data[key]) } return params; } private createHeaders() { const headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); return headers; } private checkResponeCode(res: Response) { const serverResponse = res.json() as { code: number, desc: string, data: any }; return serverResponse; } queryServer(query: { url: string, method: string }, param: any): Promise<any> { const form = this.createRequstParam(param); switch (query.method) { case 'post': return this.http.post(query.url, form, { headers: this.createHeaders() }).toPromise() .then(this.checkResponeCode.bind(this)).catch(this.handleError); case 'get': default: return this.http.get(query.url, { search: form }).toPromise() .then(this.checkResponeCode.bind(this)).catch(this.handleError); } }}
说明
handleError用来处理请求异常,这里可以加功能,比如将异常发到到服务器端
checkResponeCode 一般服务器都会返回errorCode这里做全局错误处理
createHeader 用与创建header可以添加参数实现动态添加额外的header信息,比如token
createRequstParam 用来生成form表单、json、query string
queryServer 用户外部调用发起请求
阅读全文
0 0
- angular学习总结八-请求service封装
- Angular指令、service封装经验总结
- angular中的http请求封装
- angular学习总结五——发起post、get请求
- angular-flot学习总结
- Angular 学习总结笔记
- angular学习(八)—— Expressions
- angular学习(八)—— Expressions
- AngularJS学习(八) --服务Service
- Android学习八 Service服务
- angular $q封装$http get和post请求
- Angular service
- angular service
- Angular学习:http请求失败的问题
- LitePal学习总结 (八)
- ELCImagePicker 学习总结(八)
- JAVA学习总结八
- coredata学习总结(八)
- 怎么在CentOs上安装Tomcat?
- 文章标题
- 构建用户管理微服务
- SSDT Hook实现内核级的进程保护
- LeetCode中Reverse Integer
- angular学习总结八-请求service封装
- 条款21:必须返回对象时,别妄想返回其reference
- Linux进程间通讯--管道(有名管道
- Kor (数学题...)
- javaee 中不同页面传参方法
- 特定需求下动态代理导致的Spring事务不能回滚
- 139. Word Break
- Adobe Dreamweaver CC 2018 v18.0官方中文版下载附安装教程
- Andrew Ng's deeplearning Course1Week2 Neural Networks Basics(神经网络基础)