支持HATEOAS的SOAP服务的REST包装器

时间:2018-02-20 10:55:15

标签: java rest soap spring-hateoas

我为一些SOAP服务做了一个REST包装器。现在我想添加HATEOAS支持,但是对于资源,我使用自动创建的类和maven-jaxb2-plugin库。例如,自动生成的类BookDetails

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BookDetails", propOrder = {
     "id",
     "name",
     "title",
     "author"
})
public class BookDetails {

    @XmlElement(required = true)
    protected String id;>

  ...
}

我无法从ResourceSupport扩展该类,因为如果.wsdl更改了BookDetails类,则会重新创建并覆盖。此外,如果创建的新类从BookDetails延伸到BookDetailsResource,那么我无法从ResourceSupport延伸。任何想法或以前的问题类似吗?

如果有人需要实现它,那么这是一个如何创建包装器的教程。 https://howtodoinjava.com/spring/spring-boot/spring-soap-client-webservicetemplate/

1 个答案:

答案 0 :(得分:0)

与其尝试创建一个可以同时映射到两者的域模型,不如为SOAP和HAL创建单独的域模型可能更好。

这样,您可以使用Spring Web Services部署其契约优先方法,并生成基于WSDL的BookDetails域对象。

您可以在此处定义REST控制器,以及GET / POST / PUT等各种方法。

最后一步是定义一个利用您的REST控制器的ResourceAssembler<BookDetails, Resource<BookDetails>>,最终将基于SOAP的BookDetails对象转换为包含相关链接的HAL表示形式。

查看https://spring.io/guides/tutorials/rest/,了解如何构建应用程序的REST部分,然后将SOAP调用视为REST控制器可以调用的基础服务层。