全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

基于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<{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);//打印返回的数据
 });
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angularjs  # http  # 封装  # angular2  # http封装  # angular  # angularjs封装$http为factory的方法  # AngularJS封装$http.post()实例详解  # 请输入  # 实际情况  # 大家分享  # 而定  # 创建一个  # 大家多多  # 是否正确  # 学习心得  # 请检查  # 在每一个  # param  # private  # params  # Promise  # returns  # toPromise  # operator  # export  # constructor  # HttpInterceptorService 


相关文章: 建站之星导航如何优化提升用户体验?  济南企业网站制作公司,济南社保单位网上缴费步骤?  如何在万网自助建站平台快速创建网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  网站制作服务平台,有什么网站可以发布本地服务信息?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  建站之星导航配置指南:自助建站与SEO优化全解析  常州企业网站制作公司,全国继续教育网怎么登录?  建站主机选虚拟主机还是云服务器更好?  建站之星微信建站一键生成小程序+多端营销系统  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何通过山东自助建站平台快速注册域名?  jQuery 常见小例汇总  免费ppt制作网站,有没有值得推荐的免费PPT网站?  如何构建满足综合性能需求的优质建站方案?  股票网站制作软件,网上股票怎么开户?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  如何快速生成凡客建站的专业级图册?  c# await 一个已经完成的Task会发生什么  如何选择建站程序?包含哪些必备功能与类型?  如何选择CMS系统实现快速建站与SEO优化?  建站之星后台密码遗忘?如何快速找回?  已有域名如何免费搭建网站?  如何快速上传建站程序避免常见错误?  如何快速配置高效服务器建站软件?  重庆市网站制作公司,重庆招聘网站哪个好?  如何高效搭建专业期货交易平台网站?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  在线制作视频网站免费,都有哪些好的动漫网站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  教学论文网站制作软件有哪些,写论文用什么软件 ?  中山网站制作网页,中山新生登记系统登记流程?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  开源网站制作软件,开源网站什么意思?  建站之星好吗?新手能否轻松上手建站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  建站之星后台密码遗忘如何找回?  如何选择高效可靠的多用户建站源码资源?  定制建站是什么?如何实现个性化需求?  网页设计与网站制作内容,怎样注册网站?  建站168自助建站系统:快速模板定制与SEO优化指南  高防服务器租用指南:配置选择与快速部署攻略  建站ABC备案流程中有哪些关键注意事项?  如何通过云梦建站系统实现SEO快速优化?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。