Rest Api网关和共享服务模型
我的问题的简短版本是,我试图围绕API网关和内部微服务之间如何“共享”模型来思考。我假设网关可以负责将调用转换为多个服务,并返回数据的新聚合表示。网关如何从微服务中了解可用模型 在我的简单例子中。我有:Rest Api网关和共享服务模型,rest,asp.net-web-api,microservices,api-design,api-gateway,Rest,Asp.net Web Api,Microservices,Api Design,Api Gateway,我的问题的简短版本是,我试图围绕API网关和内部微服务之间如何“共享”模型来思考。我假设网关可以负责将调用转换为多个服务,并返回数据的新聚合表示。网关如何从微服务中了解可用模型 在我的简单例子中。我有: API网关 用户服务 餐饮服务 用户服务 此rest服务将公开一个/api/users端点 型号 { "id": 12345, "name": "Joe Bloggs", "e-mail": "joe@bloggs.com", "lastloggedin":
- API网关
- 用户服务
- 餐饮服务
/api/users
端点
型号
{
"id": 12345,
"name": "Joe Bloggs",
"e-mail": "joe@bloggs.com",
"lastloggedin": "05/10/2017"
}
{
"dishes": [
{
"userId": 12345,
"isActive": true,
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
},
{
"userId": 12345,
"isActive": false,
"type": "american",
"sub-types": [
"burgers",
"steaks"
]
}
]
}
{
"cook": "Joe Bloggs",
"lastloggedin": "05/10/2017",
"dishes": [
{
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
}
]
}
餐厅服务
此rest服务将公开一个/api/disks
端点
型号
{
"id": 12345,
"name": "Joe Bloggs",
"e-mail": "joe@bloggs.com",
"lastloggedin": "05/10/2017"
}
{
"dishes": [
{
"userId": 12345,
"isActive": true,
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
},
{
"userId": 12345,
"isActive": false,
"type": "american",
"sub-types": [
"burgers",
"steaks"
]
}
]
}
{
"cook": "Joe Bloggs",
"lastloggedin": "05/10/2017",
"dishes": [
{
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
}
]
}
API网关
API网关允许有人调用/API/user/12345/disks
或/API/disks
,并为厨师返回菜肴。以及一些基本的用户详细信息
型号
{
"id": 12345,
"name": "Joe Bloggs",
"e-mail": "joe@bloggs.com",
"lastloggedin": "05/10/2017"
}
{
"dishes": [
{
"userId": 12345,
"isActive": true,
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
},
{
"userId": 12345,
"isActive": false,
"type": "american",
"sub-types": [
"burgers",
"steaks"
]
}
]
}
{
"cook": "Joe Bloggs",
"lastloggedin": "05/10/2017",
"dishes": [
{
"type": "italian",
"sub-types": [
"pizza",
"pasta"
]
}
]
}
在这一点上。我已经确定了3个模型(即C类)。2来自内部服务,1来自API网关返回的数据的新表示。我不确定API网关如何知道用户和餐厅服务模型,而不将这些模型直接耦合到API网关。基本上在网关和微服务之间共享代码,我认为这是不可取的。我认为您的问题更多地围绕API链接的概念。客户端api 1 api 2 api 3。这是可以接受的,但当然存在模式被破坏的风险,所以要小心