我有使用 CXF 实现的工作 JAX-RS 服务。如何生成 wadl?或者已经有类似球衣 http://path.to.your/restapp/application.wadl的东西了?是否有一个 maven 插件,就像 wsdl、java 到 wsdl?我已经搜索了无法找到的答案。
2 回答
如果您使用的是最新版本的 CXF,只需使用 ?_wadl 参数访问该服务。
使用 CXF 生成 WADL 的方法有很多:
- 您可以将 REST 调用(例如使用Postman)发送到基本 REST URL,它会自动为那里的所有可用服务创建 WADL。它可以帮助构建 REST API。例如:
- http://app.com/purchase/?_wadl - 为购买 API 创建 WADL
- http://app.com/profile/?_wadl - 为用户配置文件 API 创建 WADL
- CXF 3.0.0 和 2.7.11 引入了 java2wadl 插件,用于在构建时生成 WADL。详情可在此处找到。
- CXF 有关 WADL 的所有可用功能都位于CXF 文档中。
生成 WADL 后,最好将 XML 转换为更易读的形式。我发现的解决方案之一是使用 XSL 生成 HTML。我使用了来自github 项目的 XSL 。将 XSL 链接到 XML 并生成漂亮的 HTML 报告的步骤:
- 下载wadl.xsl;
- 将wadl.xsl复制到CXF生成的wadl.xml文件所在的文件夹中;
将所需的 wadl.xml 标头添加到文件的最开头:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="wadl.xsl"?>
使用 wadl.xml 替换生成的
<application ...>
标头<wadl:application xmlns:wadl="http://wadl.dev.java.net/2009/02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd ">
添加到每个标签“wadl”命名空间。例如:
<resource>
-><wadl:resource>
</resource>
-></wadl:resource>
使用 IE 打开 wadl.xml
你会得到这样的东西(来自github 项目的 example_wadl.xml ):