【问题标题】:Implementing a public API [closed]实现公共 API [关闭]
【发布时间】:2012-09-05 12:51:59
【问题描述】:

很快我将不得不实现一个公共 API(Web API)。其中一个请求是我们需要提供不同的方法来做同样的事情(例如,REST 和 SOAP),我最初的方法是这样的。

为 REST 创建一个控制器 为 SOAP 创建一个控制器

使用一个通用的 Facade 类来处理来自 REST 和 SOAP 接口的请求,Facade 类将负责访问系统的内部(直接或间接地,可以使用圆顶 DAO……等等)。

代码将用 Java 编写,很可能会使用 Spring-MVC 以及其他技术。

这里的问题是。你能理解这个吗?是不是太荒谬了?你觉得这里有什么过度架构吗?有什么建议/经验/最佳做法?

感谢您的宝贵时间:)

【问题讨论】:

  • 我也在做同样的事情,我使用 spring-mvc 控制器来处理 REST 请求和 SOAP 请求,服务类是一样的,在一个控制器中我使用不同的路径来区分 REST 请求和 SOAP 请求.
  • 如何处理版本控制(不同的 api 版本?)
  • 对不起,我给出了错误的评论,实际上我使用 spring-mvc 和 spring-ws,所以肥皂请求转到我的 Endpoint 类,而不是控制器。

标签: java api architecture spring-mvc


【解决方案1】:

你的方法对我来说很有意义。 Spring MVC 自己可以处理 REST 端点,接受和返回 XML 和/或 JSON。对于 SOAP,您将需要一个额外的框架,例如 Spring-WSApache CXF

使用 MVC 模式时,最好将控制器尽可能小,方法是将任何实际工作委托给注入控制器的其他 bean。这些其他 bean 通常遵循服务或存储库原型(使用领域驱动设计术语)。这些 Service 和 Repository bean 可以跨 REST 和 SOAP 端点重用。我认为这就是您在第三段中的意思,如果是这样,那么您就在正确的轨道上。

【讨论】:

    【解决方案2】:

    这对你有意义吗?

    是的。

    是不是太荒谬了?

    没有。

    你觉得这里有什么过度架构吗?

    没有。

    有什么建议/经验/最佳做法?

    您可以找到描述您正在做什么的设计模式。例如,GoF adapter pattern 说:“在计算机编程中,适配器模式(通常称为包装器模式或简称为包装器)是一种将类的一个接口转换为兼容接口的设计模式。”您在两个接口中拥有专用于(适配器)的 App Controller(适配器):REST 和 SOAP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2021-04-10
      • 2017-06-20
      • 2010-10-04
      • 2011-03-07
      相关资源
      最近更新 更多