最近在项目中折腾了下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小时内与您取得联系。