如何为Ionic 2中的所有请求设置默认Http标头?

时间:2016-06-04 17:10:25

标签: typescript ionic-framework angular ionic2

我已经搜索了如何设置Default Http Headers我的所有请求,并且我找到了如何使用bootstrap函数在Angular 2中实现,但它在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注射?

1 个答案:

答案 0 :(得分:4)

您未正确注册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 }

或者您可以尝试通过地图文字注册提供商,如下所示:

class User(db.Model):

    '''

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return unicode(self.id)