如何设置Web API Facade模式

时间:2015-11-17 21:07:35

标签: design-patterns asp.net-web-api facade

我一直在阅读有关Facade Pattern的内容,并且我试图了解如何实现这一点。这就是我如何理解它的实现方式:

-------------------------------------------------------------
|               (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服务器向外界公开Web API端点。该图层将具有以下端点:

api/user - POST

这接受一个JSON对象,如:

User: {
  username: 'john doe'
  addresses: [{
     street: 'something 1001'
  }, {
     straat: 'company 300'
  }]
}

然后api/user端点将返回两次调用。一个转到internal/User,一个转到internal/Address

因此,消费用户只需进行一次API调用即可保存带有地址信息的用户对象。但Facade图层会进行两次单独调用。

我对Web API的Facade模式的理解是否正确?

我的第二个问题是,当消费者试图使用API​​时,我应该在哪里进行身份验证检查?我应该在DMZ图层或Facade图层上执行此操作吗?

我觉得在这个例子中我错过了一些重要的事情。任何细节都有帮助。

1 个答案:

答案 0 :(得分:0)

我认为你很严谨。它与网关模式相同。

http://microservices.io/patterns/apigateway.html

在网关中,您可以添加授权验证,然后仅调用允许的服务。