【问题标题】:How do I set default Http Headers for all requests in Ionic 2?如何为 Ionic 2 中的所有请求设置默认 Http 标头?
【发布时间】:2016-06-06 17:14:16
【问题描述】:

我搜索了如何设置我的所有请求的默认 Http 标头,我发现如何在 Angular 2 中使用 bootstrap 函数实现,但它在 Ionic 2 中不可用,如本问题 How to set default HTTP header in Angular2? 中所述。

我想将 Content-Type 标头设置为 application/json 而不是在每个请求中设置它

我一直在尝试覆盖 BaseRequestOptions 并将它们注入我的应用程序中,但我无法覆盖它们。

app.ts

...
import {BaseRequestOptions, Headers, HTTP_PROVIDERS, Http, RequestOptions} from '@angular/http';

@Injectable()
export class MyRequestOptions extends BaseRequestOptions{
    headers:Headers = new Headers({
        'Content-Type': 'application/json; charset=UTF-8'
    });
}

@App({
  template: '<ion-nav [root]="rootPage"></ion-nav>',
  config: {},
  providers: [HTTP_PROVIDERS, MyRequestOptions]
})
export class MyApp {
  rootPage: any = HomePage;

  constructor(platform: Platform) {
     // init
  }
}

myService.ts

import {Injectable} from '@angular/core';
import {Http, Headers} from '@angular/http';

@Injectable()
export class MyService {
    constructor(private http: Http) {
    }

    getUser(id) {
         return this.http.post('/api/User/Get/', JSON.stringify({ id: id }));
    }
}

我遗漏了一些东西,我是否使用了错误的providers 注入?

【问题讨论】:

    标签: typescript ionic-framework angular ionic2


    【解决方案1】:

    你没有正确注册MyRequestOptions

    import { provide } from '@angular/core';
    import { HTTP_PROVIDERS, RequestOptions, BaseRequestOptions, Headers } from '@angular/http';
    
    ...
    @App({
      template: '<ion-nav [root]="rootPage"></ion-nav>',
      config: {},
      providers: [HTTP_PROVIDERS, provide(RequestOptions, { useClass: MyRequestOptions })]
    })
    

    或者您可以尝试像这样通过映射文字注册提供者:

    { provide: RequestOptions, useClass: MyRequestOptions }
    

    【讨论】:

      猜你喜欢
      • 2022-08-12
      • 2016-06-20
      • 2013-09-13
      • 2019-06-16
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2021-10-05
      • 2017-12-02
      相关资源
      最近更新 更多