我有一个名为Infrastructure的类,我认为它可以方便地从HttpClient
继承。这个类暴露了get,post,put和delete的方法。注入在Aurelia中使用获取HttpClient的多个类
import {Aurelia} from "aurelia-framework";
import {HttpClient, json} from "aurelia-fetch-client";
export default class Infrastructure extends HttpClient {
get(url, queryString, contentType) {
//..
}
post(url, data, contentType) {
//..
}
put(url, data, contentType) {
//..
}
delete(url, contentType) {
//..
}
}
的想法是,我现在可以有注入Infrastructure
服务,他们可以在基础设施
import {inject} from "aurelia-framework";
import Infrastructure from "./infrastructure";
@inject(Infrastructure)
export class InventoryService {
constructor (infrastructure) {
infrastructure.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl(`http://localhost:64441/inventory`);
});
this.infrastructure = infrastructure;
}
}
我有一对夫妇使用Infrastructure
这样的服务,这一切工作正常调用configure
。 问题是我不需要将两个这样的服务注入到同一个类中,并且配置的baseUrl
互相干扰。
在Aurelia中,默认情况下所有东西都是单身人士,我知道,但是在Aurelia中处理这种情况的首选方法是什么?
我知道我总是可以跳过配置baseUrl
,但配置起来非常方便,我很好奇是否有更好的方法。
谢谢你回答@Jeremy,但不会在底层的'HttpClient'上调用'.withBaseUrl(“...”)仍然干扰这两个不同的实例,因为'Infrastructure'正在注入'HttpClient '? 另外,我是否正在通过继承'HttpClient'做一些事情? –
已更新的答案 - 您可能想要停止使用扩展HttpClient并直接使用HttpClient的基础结构类。 –
@Jeremy:从HttpClient派生出来有什么缺点吗?直接使用HttpClient是否会阻止OP所要求的用例,如使用抽象查询(如delete或post)来扩展它?另外:为了将来的参考,你可以在你的答案中添加用于获取aurelia-container-instance的代码,就像你在[这里]完成的一样(https://github.com/aurelia/dependency-injection/issues/73) ? – user3469861