• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基于angular2 的 http服务封装的实例代码

angularjs 搞代码 4年前 (2021-12-31) 31次浏览 已收录 0个评论

这篇文章主要介绍了基于angular2 的 http服务封装实例代码,

最近在项目中折腾了下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|Promise} */ 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|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|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 |<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码网</strong>| {}, statusText: res.statusText, status: res.status, success: true } } else { return { statusText: res.statusText, status: res.status, success: true } } } /** * 处理请求错误 * @param error * @returns {void|Promise|Promise|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);//打印返回的数据 }); } } 

以上就是基于angular2 的 http服务封装的实例代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于angular2 的 http服务封装的实例代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址