我的问题的简短版本是我试图了解模型如何在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网关。基本上在网关和微服务之间共享代码,我认为这是不可取的。