最近在项目中折腾了下angular2,所以出来跟大家分享,希望有帮助,每个公司业务不一样,按实际情况而定,个人学习心得,不作为标准。
1、定义http-interceptor.service.ts服务,统一处理http请求
/** * name:http服务 * describe:对http请求做统一处理 * author:Angular那些事 * date:2017/6/3 * time:11:29 */ import {Injectable} from '@angular/core'; import {Http, Response} from '@angular/http'; import 'rxjs/add/operator/toPromise'; @Injectable() export class HttpInterceptorService { constructor(private http: Http) { } /** * 统一发送请求 * @param params * @returns {Promise<{success: boolean, msg: string}>|Promise<R>} */ public request(params: any): any { if (params['method'] == 'post' || params['method'] == 'POST') { return this.post(params['url'], params['data']); } else { return this.get(params['url'], params['data']); } } /** * get请求 * @param url 接口地址 * @param params 参数 * @returns {Promise<R>|Promise<U>} */ public get(url: string, params: any): any { return this.http.get(url, {search: params}) .toPromise() .then(this.handleSuccess) .catch(res => this.handleError(res)); } /** * post请求 * @param url 接口地址 * @param params 参数 * @returns {Promise<R>|Promise<U>} */ public post(url: string, params: any) { return this.http.post(url, params) .toPromise() .then(this.handleSuccess) .catch(res => this.handleError(res)); } /** * 处理请求成功 * @param res * @returns {{data: (string|null|((node:any)=>any) */ private handleSuccess(res: Response) { let body = res["_body"]; if (body) { return { data: res.json().content || {}, page: res.json().page || {}, statusText: res.statusText, status: res.status, success: true } } else { return { statusText: res.statusText, status: res.status, success: true } } } /** * 处理请求错误 * @param error * @returns {void|Promise<string>|Promise<T>|any} */ private handleError(error) { console.log(error); let msg = '请求失败'; if (error.status == 400) { console.log('请求参数正确'); } if (error.status == 404) { console.error('请检查路径是否正确'); } if (error.status == 500) { console.error('请求的服务器错误'); } console.log(error); return {success: false, msg: msg}; } }
2、在每一个模块创建一个service,service定义此模块的所有http数据请求,我这里演示登录模块:login.service.ts
/** * name:登录服务 * describe:请输入描述 * author:Angular那些事 * date:2017/6/1 * time:00:13 */ import {Injectable} from '@angular/core'; import {HttpInterceptorService} from 'app/commons/service/http-interceptor.service' @Injectable() export class LoginService { constructor(private httpInterceptorService: HttpInterceptorService) { } /** * 登陆功能 * @param params * @returns {Promise<{}>} */ login(userName: string, passWord: string) { return this.httpInterceptorService.request({ method: 'POST', url: 'http://119.232.19.182:8090/login', data: { loginName: userName, password: passWord }, }); } /** * 注册 * @param user * @returns {any} */ reguster(user: any) { return this.httpInterceptorService.request({ method: 'POST', url: 'http://119.232.19.182:8090/reguster', data: { user: user }, }); } }
3、在component注入servicelogin.service.ts。调用seriveLogin.service.ts服务定义的方法,这里通过login.component.ts演示
/** * name:登录组件 * describe:请输入描述 * author:Angular那些事 * date:2017/6/1 * time:00:30 */ import {Component} from '@angular/core' import {LoginService} from './login.service' @Component({ selector: 'login', templateUrl: './login.component.html', providers: [LoginService], }) export class LoginComponent { private userName: string; private passWord: string; constructor(private loginService: LoginService) { } /** * 登录 */ toLogin() { this.loginService.login(this.userName, this.passWord).then(result => { console.log(result);//打印返回的数据 }); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“基于angular2 的 http服务封装的实例代码”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
2024年11月14日
2024年11月14日
- 黑鸭子2010-再度重相逢[首版][WAV+CUE]
- 【原神手游】5.2版本圣遗物优化详情
- 方季惟.1989-一生只爱一次【蓝与白】【WAV+CUE】
- 群星.1997-强力舞曲总动员【金点】【WAV+CUE】
- 盘尼西林.2024-岛与黎明【智慧大狗】【FLAC分轨】
- 刀郎《柔情经典》 2CD[WAV分轨][3.8G]
- 群星2024《民谣精选》原音母版1:1直刻[低速原抓WAV+CUE][1.1G]
- 经典《泰坦尼克号原声大碟》[WAV+DSF+FLAC多版][5.2G]
- 魔兽世界兽王猎输出宏代码是什么 兽王猎翻页输出宏命令代码分享
- 魔兽世界wlk野德一键输出宏是什么 wlk野德一键输出宏介绍
- wlk鸟德一键输出宏是什么 wlk鸟德一键输出宏介绍
- 《明末:渊虚之羽》外网新宣传:有勇气面对障碍吗?
- 视觉盛宴!V社公布《看火人》团队新作水面物理效果演示
- 张艺谋呼吁观众走进影院看电影:对解说短视频很无语
- 车载音乐最强享受 《车载极致女声精选》[WAV分轨][1G]