近来在做另一个项目接口设计的时候需要考虑这样一个需求,一套接口需兼容两类数据类型(xml和json)。
基于这个项目,原来的接口均为WSDL,遵守的协议为SOAP,它是基于XML的。
于是我想了一些办法做一些扩展,这样的扩展保持WSDL不变的前提下,增加少量代码实现。
由于之前整合Apache CXF用到过,所以很顺利的将其复用过来。
核心代码如下:
@RestController @RequestMapping("/user") public class UserApiController { @PostMapping("/add") public int add(@RequestParam String email, @RequestParam String username, @RequestParam String password) { try { // 接口地址 String address = ":9090/cxf/user?wsdl"; // 代理工厂 JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean(); // 设置代理地址 jaxWsProxyFactoryBean.setAddress(address); // 设置接口类型 jaxWsProxyFactoryBean.setServiceClass(UserService.class); // 创建一个代理接口实现 UserService userService = (UserService) jaxWsProxyFactoryBean.create(); return userService.addUser(email, username, password); } catch (Exception e) { e.printStackTrace(); return -1; } } }