实现公共API

时间:2012-04-18 01:58:38

标签: java api architecture spring-mvc

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

为REST创建一个Controller 为SOAP构建一个Controller

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

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

这里的问题是。你能理解这个吗?太荒谬了吗?你觉得这里有过度建筑吗?任何建议/经验/最佳实践?

感谢您的时间:)

2 个答案:

答案 0 :(得分:1)

这对你有意义吗?

太荒谬了吗?

没有。

你觉得这里有过度建筑吗?

没有

任何建议/经验/最佳实践?

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

答案 1 :(得分:1)

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

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