我的问题的简短版本是,我正试图围绕模型如何在 API 网关和内部微服务之间“共享”。我假设网关可以负责转换对多个服务的调用并返回数据的新聚合表示。网关如何知道微服务的可用模型?
在我的简单示例中。我有:
- API 网关
- 用户服务
- 餐厅服务
用户服务
这个休息服务会暴露一个/api/users
端点
模型
{
"id": 12345,
"name": "Joe Bloggs",
"e-mail": "joe@bloggs.com",
"lastloggedin": "05/10/2017"
}
餐厅服务
这个休息服务会暴露一个/api/dishes
端点
模型
{
"dishes": [
{
"userId": 12345,
"isActive": true,
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
},
{
"userId": 12345,
"isActive": false,
"type": "american",
"sub-types": [
"burgers",
"steaks"
]
}
]
}
API 网关
API 网关可以允许某人打电话/api/user/12345/dishes
,或者/api/dishes
它会为厨师返回菜肴。以及一些基本的用户详细信息。
模型
{
"cook": "Joe Bloggs",
"lastloggedin": "05/10/2017",
"dishes": [
{
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
}
]
}
在此刻。我已经确定了 3 个模型(即 C# 类)。2 来自内部服务,1 用于从 API 网关返回的数据的新表示。我不确定 API 网关如何知道用户和餐厅服务模型,而无需将这些模型直接耦合到 API 网关。本质上是在网关和微服务之间共享代码,我认为这是不可取的。