angular中的http请求封装
来源:互联网 发布:柠檬tv网络电视 编辑:程序博客网 时间:2024/05/24 05:01
1、新建ts文件(工具类;HttpUtils.Service.ts)
/** * name:http服务 * describe:对http请求做统一处理 */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 { // POST请求(参数、返回值类型都是任意类型) 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"]; // console.log("接口返回的成功信息:" + body) if (body) { // 有数据返回 return { data: res.json().data || {}, // 返回内容 code: res.json().code || {}, // 返回code message: res.json().message || {}, // 返回信息 statusText: res.statusText, status: res.status, success: true } } else { // 无数据返回 return { data: res.json().data || {}, // 返回内容 code: res.json().code || {}, // 返回code message: res.json().message || {}, // 返回信息 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}; }}
/** * name:登录服务 * describe:请输入描述 */import {Injectable} from '@angular/core';import {HttpInterceptorService} from '../utils/HttpUtils.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://localhost:8080/ailschn_community/login/userLogin', // 登录URL data: { userNickname: username, userPassword: 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、调用登录service
import {Component, OnInit} from '@angular/core';import {IonicPage, ModalController} from 'ionic-angular';import {TabsPage} from "../tabs/tabs";import {LoginService} from './login.service';import {ActivatedRoute, Params} from '@angular/router';import {Location} from '@angular/common';import 'rxjs/add/operator/switchMap';@IonicPage()@Component({ selector: 'page-login', templateUrl: 'login.html', providers: [LoginService]})export class LoginPage implements OnInit { private username: string; private userpass: string; private id: number; constructor(public modalCtrl: ModalController, public loginService: LoginService, public route: ActivatedRoute, public location: Location) { // http.post() } ngOnInit() { // let id = this.route.params.subscribe(data=>console.log(data.id)); this.route.params.subscribe((data) => this.id = data.id); console.log("路由中传过来的id是:" + this.id); } back() { console.log("点击了返回按钮!") this.location.back(); } ionViewDidLoad() { console.log('ionViewDidLoad LoginPage'); } /** * 登录 */ userLogin(username: HTMLInputElement, password: HTMLInputElement, toggle) { this.username = username.value; this.userpass = password.value; this.loginService .login(this.username, this.userpass) .then(result => { console.log("登录接口返回的信息是:" + result);//打印返回的数据 if (result.code == 200 && result.data) { // 登录成功 // 在这里做判断,路由跳转 let modal = this.modalCtrl.create(TabsPage); modal.present(); } else { // 登录失败 alert(result.message); } }); }}
阅读全文
0 0
- angular中的http请求封装
- angular $q封装$http get和post请求
- Angular----$http请求数据
- Angular中http请求后再执行封装的echarts指令($watch)
- angular用$http请求数据
- angular的http请求方式
- Angular中的$http
- Android封装Http请求
- Block封装http请求
- http请求封装
- 简单封装 HTTP 请求
- go http 请求封装
- http请求方法封装
- http封装ajax请求
- ios开发如何封装AFN第三方类库中的http请求
- angular学习总结八-请求service封装
- Angular-$http请求后台php接收方法
- ionic/angular $http post form-data请求
- gcc 编译 so 导出函数问题
- mac上搭建appium+IOS自动化测试环境
- spring security(七) session 并发,一个用户在线后其他的设备登录此用户失败
- linux下编写调用so文件学习
- 徒手撸个http服务器(三)------epoll 实现
- angular中的http请求封装
- 【DP专辑】ACM动态规划总结
- 支付宝小程序体验—— 业务组件
- 【读书笔记】windows核心编程
- 关于集群、负载均衡、分布式的区别
- 读书笔记《Inside the C++ Object Model》:Default Constructor的构造操作
- Unity 简单手机小游戏
- 58. Length of Last Word
- scrapy的重要对象Requests,Responses的使用