修改添加新参数的所有请求

时间:2016-10-07 23:31:56

标签: aurelia aurelia-fetch-client

我正在尝试找到一种优雅的方式来为我的应用程序完成的每次提取添加一个参数。

是否有任何配置允许我修改附加新属性的主体?我查看了github上的文档和aurelia-fetch-client实现,但我找不到任何相关内容。

2 个答案:

答案 0 :(得分:1)

你正在寻找拦截器。以下是一些可供阅读的链接:

http://aurelia.io/hub.html#/doc/api/aurelia/fetch-client/latest/interface/Interceptor

https://gist.github.com/bryanrsmith/14caed2015b9c54e70c3

基本上,您将要修改请求正文,您应该可以通过执行以下操作来执行此操作:

httpClient.configure(config => {
    config
        .withBaseUrl('api/')
        .withDefaults({
            credentials: 'same-origin',
            headers: {
                'Accept': 'application/json',
                'X-Requested-With': 'Fetch'
            }
        })
        .withInterceptor({
            request(request) {
                // you're going to want to modify the request body and add the appropriate property. Should be able to do it from here
                return request;
            }
        });
});

答案 1 :(得分:0)

对于这个问题,我找到了另一种方法。

我创建了一个自定义类,在构造函数中我添加了参数以在fetch体中发送它。

import { transient } from 'aurelia-framework';

@transient()
export class MyCustomBodyRequest {
    private _body?: any = {};

    constructor() {
        this._body.myCustomParameterOnEveryReq = getIt();
    }

    public get body() {
        return this._body;
    }

    public set body(body: any) {
        Object.assign(this._body, body);
    }

}​