我需要创建一个首先使用SOAP的REST服务。最好的方法是什么?
我想使用Spring Boot创建一个微服务,但对于有经验的人我有一些问题:
答案 0 :(得分:0)
我应该使用哪些其他架构或技术(使用spring boot)?
我的回答是,如果您只想提供RESTful服务 没有Spring Cloud,那么我认为你可以参考以下2 Spring官方网站上的教程实现了这个目标:
是否有标准的技术堆栈?
目前,我建议您使用Spring Boot作为首选。因为它们是网络上丰富的资源,并且确实减少了开发工作量。
我应该注意哪些陷阱?
如果您最终选择Spring Boot,请熟悉其组件,您可以从Guides开始实现它的工作原理。或者你可以将Spring Boot与传统的Spring框架混合起来。
答案 1 :(得分:0)
在我们的项目中有类似的情况,我们使用弹簧组件。据我所知,您希望打开一个最可能接受json对象的REST端点,并且您希望在该请求中发出soap Web服务请求,然后您希望返回包含soap响应信息的响应。要发出soap请求,可以使用spring Web服务 - WebServiceTemplate。它会将您的对象编组为xml并为您提供soap请求。当然你可以使用一些其他的web服务框架,比如apache cxf,它可能最适合某些特殊情况,但我会首先尝试使用一个来自Spring系列的框架,同时使用Spring。您应该在webservicetemplate对象上设置超时值,以便在外部系统运行不正常或网络出现问题时不要等待太长时间。因为它直接影响您的系统性能。此外,我建议您实施断路器模式,以使您的系统更加健壮。您应始终将系统性能与集成的其他系统隔离开来,在这种情况下,您可以通过执行上述操作来实现此目的。
答案 2 :(得分:0)
据我所知,您应该使用Maven构建的Spring启动应用程序。 为了向SOAP Web服务发送REST调用并返回JSON响应,您需要按顺序执行所有这些步骤:
业务逻辑:将JSON字段(如headers,query-param,body变量)映射到XML请求必填字段(使用pojo类或object-mapper)原因:由于SOAP端点只接受XML请求
Service Broker Logic:导入“org.springframework.web.client.RestTemplate”并使用
**ResponseEntity<String> responseEntity=RestTemplate.exchange(endPointURL, HttpMethod.GET/POST/PUT/DELETE, HttpEntity/headers, uriVariables)**
**endpointURL** -- SOAP End point URL ,that the REST service has to consume.
**HTTPMethod** -- Method Type such as GET ,PUT ,POST ,DELETE etc.
**HTTPEntity** -- Soap requires for mandatory sender/headers/{a}.Make sure that you set your header name and value as key-Valye pair in HTTP headers.
**uriVariables** -- (Object... urivariables) such as String.class ,Integer.class
You should also put the **connectTimeout** ,**isSSLDisabled**,**responseCached** elements while generating request to restTemplate.
responseEntity.getBody()是解组后的XML响应。可以使用mapper提取它。
XML_BaseResponse response=mapper.readValue(responseEntity.getBody(), XML_BaseResponse.class);
业务逻辑:从XML_BaseResponse中提取必要的字段并使用setter或getter的函数,在响应中设置必填字段。
baseResponse.setName(xml_baseResponse.getPersonsName());
baseResponse.setAddress(xml_baseResponse.getAddress());
baseResponse.setCity(xml_baseResponse.getcityName());