ABP:微服务架构,Angular 和代理生成
ABP: Microservice architecture, Angular and proxy-generation
在具有 Angular 前端的微服务架构中使用 ABP 3.2.1。
我们有几个微服务(我们称它们为会计、客户和订单),每个微服务都有一个带有区域属性(模块名称)的控制器和根据微服务名称命名的远程服务。
使用 Abp CLI,我们正在尝试为这些服务中的每一个单独生成代理。
我们的 environment.ts 文件的片段:
apis: {
default: {
rootNamespace: "Example",
url: 'https://localhost:5000',
},
Accounting: {
rootNamespace: "Example",
url: 'https://localhost:5010',
},
Customer: {
rootNamespace: "Example",
url: 'https://localhost:5011',
},
Order: {
rootNamespace: "Example",
url: 'http://localhost:5012',
}
第一次运行生成代理时,它工作正常。例如 abp generate-proxy --module order --api-name Order
.
然而,当 运行 这是第二次针对不同的 API (例如,abp generate-proxy --module accounting --api-name Accounting
,它失败并显示错误消息:
[Invalid Module] Backend module "order" does not exist in API definition
- 但是,当出现此错误时,我们实际上是在尝试定位“会计”模块。
这里的行为似乎是它期望任何先前生成的模块都存在于所有目标 API 中。
有没有人让它成功运行?任何建议的解决方法?
这里的问题是;您没有单独的 Angular 模块,但您的前端有单独的后端模块。这使得后端和前端 API 用法不兼容。
abp generate-proxy
生成所有模块,因为不同模块之间可能共享公共 DTO 或对象。所以最好的做法是 BFF Backends For Frontends
pattern.
因此答案是;创建订单和会计 Angular 个模块。
见;
在具有 Angular 前端的微服务架构中使用 ABP 3.2.1。
我们有几个微服务(我们称它们为会计、客户和订单),每个微服务都有一个带有区域属性(模块名称)的控制器和根据微服务名称命名的远程服务。
使用 Abp CLI,我们正在尝试为这些服务中的每一个单独生成代理。
我们的 environment.ts 文件的片段:
apis: {
default: {
rootNamespace: "Example",
url: 'https://localhost:5000',
},
Accounting: {
rootNamespace: "Example",
url: 'https://localhost:5010',
},
Customer: {
rootNamespace: "Example",
url: 'https://localhost:5011',
},
Order: {
rootNamespace: "Example",
url: 'http://localhost:5012',
}
第一次运行生成代理时,它工作正常。例如 abp generate-proxy --module order --api-name Order
.
然而,当 运行 这是第二次针对不同的 API (例如,abp generate-proxy --module accounting --api-name Accounting
,它失败并显示错误消息:
[Invalid Module] Backend module "order" does not exist in API definition
- 但是,当出现此错误时,我们实际上是在尝试定位“会计”模块。
这里的行为似乎是它期望任何先前生成的模块都存在于所有目标 API 中。
有没有人让它成功运行?任何建议的解决方法?
这里的问题是;您没有单独的 Angular 模块,但您的前端有单独的后端模块。这使得后端和前端 API 用法不兼容。
abp generate-proxy
生成所有模块,因为不同模块之间可能共享公共 DTO 或对象。所以最好的做法是 BFF Backends For Frontends
pattern.
因此答案是;创建订单和会计 Angular 个模块。
见;