我一直在阅读关于Facade模式的文章,我正在尝试了解如何实现它。下面是我对如何实现它的理解:
-------------------------------------------------------------
| (Facade layer) API Exposure |
-------------------------------------------------------------
| DMZ |
| (Auth API) (Application Web API) |
-------------------------------------------------------------所以有两层。所以基本上有两个Web API端点。居住在DMZ中的人,外部世界无法访问它。它包含如下端点:
internal/User Get/Put/Post/Del
internal/Order Get/Put/Post/Del
internal/Product Get/Put/Post/Del
internal/Address Get/Put/Post/Del
etc.然后是向外界公开Web API端点的公共Web服务器。该层将具有如下端点:
api/user - POST它接受JSON对象,如下所示:
User: {
username: 'john doe'
addresses: [{
street: 'something 1001'
}, {
straat: 'company 300'
}]
}然后,api/user端点将反过来进行两个调用。一个去internal/User,一个去internal/Address。
因此,消费用户只需进行一次API调用,即可保存包含地址信息的user对象。但是Facade层将进行两个单独的调用。
我对Web的外观模式的理解正确吗?
我的第二个问题是,当消费者尝试使用API时,我应该在哪里进行身份验证检查?我应该在DMZ层还是外观层上这样做?
我有种感觉,在这个例子中我遗漏了一些重要的东西。任何细节都是有帮助的。
发布于 2015-11-18 06:03:00
我认为你是对的。它与网关模式相同。
http://microservices.io/patterns/apigateway.html
在网关中,您可以添加授权验证,然后只调用允许的服务。
https://stackoverflow.com/questions/33767007
复制相似问题