angular7中httpClient封装get/post请求

  • Post author:
  • Post category:其他


一般获取数据都是异步的,使用Observable进行异步数据处理。错误的捕获等。

login.component.ts

import { HttpService } from 'src/app/services/http.service';

constructor(private http: HttpService) {}

// ajax数据测试 get
    doGet() {
        const obj = {
            _userName: '张三',
            pwd: 123456
        };
        this.http.doGet('ActionApi/UserInfo/CheckUserName2', {params: obj}).subscribe(data => {
            console.log(data);
        });
    }

    // ajax数据测试 post
    doPost() {
        const obj = {
            _userName: '张三',
            pwd: 123456
        };
        this.http.doPost('ActionApi/UserInfo/CheckUserName', obj).subscribe((data: any) => {
            console.log(data, 'post请求');
        });
    }

http.service.ts

import { HttpClient, HttpHeaders } from '@angular/common/http';
import {Observable} from 'rxjs';

@Injectable({
    providedIn: 'root'
})
export class HttpService {

    public api = 'http://192.168.1.114:8041/';
    // public api = 'http://localhost:4200/';

    httpOptions = {
        headers: new HttpHeaders({'Content-Type': 'application/json'})
    };

    constructor(public http: HttpClient) {}

    // get请求
    doGet(url: any, params?: any) {
        console.log(params);
        return new Observable(observer => {
            this.http.get(this.api + url, params).subscribe(response => {
                observer.next(response);
            }, err => {
                observer.error(err);
            });
        });
    }

    // post请求
    doPost(url: any, params?: any) {

        // params.timespan = new Date().getTime();

        // params.signature = this.encryption(params);

        return new Observable(observer => {
            this.http.post(this.api + url, params, this.httpOptions).subscribe(response => {
                observer.next(response);
            }, err => {
                observer.error(err);
            });
        });
    }

    // 加密处理
    encryption(data: any) {
        let str = '';
        for (const key in data) {
           if (true) {
                if (typeof data[key] === 'object') {
                    data[key] = JSON.stringify(data[key]);
                }
                str += key + data[key];
           }
        }
        return Md5.hashStr(str);
    }
}



登录数据处理
  submitForm(): void {

        // 拼接登录接口传递的数据
        const logoData = `UserName=${this.userInfo.username}&Password=${this.userInfo.password}&grant_type=password`;

        this.http.doPost('ActionApi/UserInfo/VirtualFactoryUserLogin', logoData).subscribe((data: any) => {
            // 如果返回正确,将里面的token存在本地,用来登录验证和权限处理
            if (data.access_token) {
                sessionStorage.setItem('access_token', data.access_token);
                this.router.navigate(['/home']);
                this.doPost();
            }
        }, err => {
            console.log(err.error, 'xxx');
        });

        // 路由守卫测试
        // sessionStorage.setItem('access_token', 'data.access_token');
        // this.router.navigate(['/home']);
    }



版权声明:本文为yw00yw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。