有没有办法(例如从 WildFly 管理控制台)列出 WildFly 中部署的所有 REST 端点?或者在服务器启动时将它们列在日志中?
最佳答案
使用RegistryStatsResource
使用 RESTEasy(随 WildFly 一起提供),您可以将以下内容添加到 web.xml
中:
<context-param>
<param-name>resteasy.resources</param-name>
<param-value>org.jboss.resteasy.plugins.stats.RegistryStatsResource</param-value>
</context-param>
然后请求以下 URL:
http://[hostname]:[port]/[context]/[api-path]/resteasy/registry
此类端点可以生成 XML 和 JSON 内容。只需将 Accept
header 添加到具有所需媒体类型的请求中即可:
application/xml
application/json
检查源代码
如果您对创建自己的实现的源代码感兴趣,请查看 RegistryStatsResource
class on GitHub .
源代码中最相关的部分如下所示(它是 RESTEasy 特定的):
ResourceMethodRegistry registry = (ResourceMethodRegistry)
ResteasyProviderFactory.getContextData(Registry.class);
for (String key : registry.getBounded().keySet()){
List<ResourceInvoker> invokers = registry.getBounded().get(key);
for (ResourceInvoker invoker : invokers) {
if (invoker instanceof ResourceMethodInvoker) {
ResourceMethodInvoker rm = (ResourceMethodInvoker) invoker;
// Extract metadata from the ResourceMethodInvoker
}
}
Swagger 可能是一种替代方案
根据您的要求,您可以使用 Swagger记录您的 API。它带有 set of annotations描述您的 REST 端点。
然后使用 Swagger UI为您的 API 提供实时文档。
<小时/>注意:截至 2017 年 2 月,看起来像 RegistryStatsResource
类完全没有记录。我在深入研究 RESTEasy 源代码以进行调试时偶尔会发现它。另外,我发现了这个JBoss EAP issue跟踪该类缺少文档的情况。
关于rest - WildFly 管理 - 列出/检测 WildFly 中部署的 REST 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462401/