angular获取请求头_Angular6 HttpClient :怎么能获取response header

  • Post author:
  • Post category:其他


api.service.ts

import { HttpClient } from ‘@angular/common/http’;

import { Injectable, isDevMode } from ‘@angular/core’;

import { NzNotificationService } from ‘ng-zorro-antd’;

// import { Observable } from ‘rxjs’;

import { UtilService } from ‘@/services/util.service’;

@Injectable()

export class ApiService {

async request(method, url, data = {}) {

const headers = {

‘Content-Type’: ‘application/json’,

Authorization: `Bearer ${localStorage.getItem(‘token’)}`,

};

const trim = s => s === undefined || s === null ? ” : s;

const args: any = [[

// isDevMode() ? ‘/api’ : ‘//yanduapi.t.oc1.xyz/v2’,

window[‘baseUrl’],

url.replace(/:([^&;/?]+)/g, (…s) => trim(data[s[1]])),

].join(‘/’)];

const params = Object.keys(data).reduce((obj, key) => {

obj[key] = trim(data[key]);

return obj;

}, {});

const response = {

observe: “response” as ‘body’, // to display the full response

responseType: “json”

}

if (method === ‘get’ || method === ‘delete’) {

args.push({ headers, params, response });

} else {

args.push(params, { headers });

}

try {

// const requestData_old = JSON.parse(localStorage.getItem(‘requestData’));

const requestData = {

url: args[0],

method: method,

// timestamp: (new Date()).getTime(),

}

console.log(args)

return await this.http[method](…args).subscribe(resp => {

// Here, resp is of type HttpResponse.

// You can inspect its headers:

console.log(resp);

// And access the body directly, which is typed as MyJsonData as requested.

// console.log(resp.body.someField);

});

// }

} catch (e) {

console.log(e)

const { status, statusText } = e;

if (status != 401) {

// this.notify.create(‘error’, `${status}`, e.error.message);

}

if (status === 401) {

localStorage.clear();

this.util.navigate([‘/user/login’]);

}

throw e;

}

}

delete = (url) => (data?) => this.request(‘delete’, url, data);

get = (url) => (data?) => this.request(‘get’, url, data)

patch = (url) => (data?) => this.request(‘patch’, url, data);

post = (url) => (data?) => this.request(‘post’, url, data);

put = (url) => (data?) => this.request(‘put’, url, data);

constructor(

private http: HttpClient,

private notify: NzNotificationService,

private util: UtilService,

) { }

}

async getData(index?) {

this.loading = true;

this.currentPage = index;

const data = await this.api.get(‘accounts’)({

page: this.currentPage,

‘per-page’: this.limits

})

console.log(data)

// this.loading = false;

// this.data = data;

// this.totalCount = data._meta.totalCount;

}

在封装的api中打印的 console.log(resp); 还是只有response body的内容 应该怎么写能拿到response header的内容呢 然后我之前是用toPromise 如果改成subscribe应该怎么调用呢 在component中

请大神指个路 小白刚开始学 之前的封装不是我写的



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