国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

基于angular2 的 http服務(wù)封裝的實(shí)例代碼

2019-11-19 16:13:34
字體:
供稿:網(wǎng)友

最近在項(xiàng)目中折騰了下angular2,所以出來跟大家分享,希望有幫助,每個(gè)公司業(yè)務(wù)不一樣,按實(shí)際情況而定,個(gè)人學(xué)習(xí)心得,不作為標(biāo)準(zhǔn)。

1、定義http-interceptor.service.ts服務(wù),統(tǒng)一處理http請(qǐng)求

/** * name:http服務(wù) * describe:對(duì)http請(qǐng)求做統(tǒng)一處理 * 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) { } /** * 統(tǒng)一發(fā)送請(qǐng)求 * @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請(qǐng)求 * @param url 接口地址 * @param params 參數(shù) * @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請(qǐng)求 * @param url 接口地址 * @param params 參數(shù) * @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)); } /** * 處理請(qǐng)求成功 * @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  } } } /** * 處理請(qǐng)求錯(cuò)誤 * @param error * @returns {void|Promise<string>|Promise<T>|any} */ private handleError(error) { console.log(error); let msg = '請(qǐng)求失敗'; if (error.status == 400) {  console.log('請(qǐng)求參數(shù)正確'); } if (error.status == 404) {  console.error('請(qǐng)檢查路徑是否正確'); } if (error.status == 500) {  console.error('請(qǐng)求的服務(wù)器錯(cuò)誤'); } console.log(error); return {success: false, msg: msg}; }}

2、在每一個(gè)模塊創(chuàng)建一個(gè)service,service定義此模塊的所有http數(shù)據(jù)請(qǐng)求,我這里演示登錄模塊:login.service.ts

/** * name:登錄服務(wù) * describe:請(qǐng)輸入描述 * 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  }, }); } /** * 注冊(cè) * @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。調(diào)用seriveLogin.service.ts服務(wù)定義的方法,這里通過login.component.ts演示

/** * name:登錄組件 * describe:請(qǐng)輸入描述 * 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);//打印返回的數(shù)據(jù) }); }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 从化市| 宝应县| 永嘉县| 湾仔区| 华池县| 太康县| 朝阳市| 贵港市| 惠水县| 盘山县| 普宁市| 隆子县| 兴国县| 府谷县| 会同县| 鹰潭市| 绥化市| 米易县| 武山县| 故城县| 铁力市| 民乐县| 桂林市| 枣强县| 富蕴县| 田阳县| 阿拉善右旗| 和平县| 道孚县| 来凤县| 屏东县| 东乡| 江都市| 砀山县| 鄂托克前旗| 乌兰察布市| 通城县| 教育| 兴义市| 枞阳县| 金堂县|