91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于angular2 的 http服務封裝的實例代碼

發布時間:2020-09-23 14:13:20 來源:腳本之家 閱讀:116 作者:小處成就大事 欄目:web開發

最近在項目中折騰了下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);//打印返回的數據
 });
 }

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荥经县| 图们市| 自贡市| 兰考县| 万山特区| 银川市| 共和县| 都江堰市| 乐昌市| 庐江县| 斗六市| 南溪县| 景德镇市| 前郭尔| 华容县| 鲜城| 自治县| 凤城市| 登封市| 祁东县| 麟游县| 巨鹿县| 莱西市| 安宁市| 汉源县| 布拖县| 芦山县| 姚安县| 镇坪县| 安多县| 斗六市| 夏河县| 镇远县| 张家港市| 论坛| 湘阴县| 达拉特旗| 乌兰察布市| 莎车县| 阳谷县| 射阳县|