java - 如何从 Controller 访问 REST API 的所有可用路由?

标签 java json spring rest spring-boot

我正在使用 Spring Boot 创建一个 REST API,我想在用户向 /help 甚至向 /help 发出请求时返回所有可用路由的列表(作为 JSON)只需到服务器的根端点,即在我的情况下,因为我在本地工作,localhost:8080

我知道我可以在 Spring Boot 应用程序启动时在日志中看到可用的路由,但我不确定如何从 Spring Boot Controller 访问这些路由。正如我所说,这些路由将以 JSON 形式返回,如下所示:

{

    routes: [
        "/api/users/create",
        "/api/users/list",
        ...
    ]

}

当然,最好提供额外的必需信息来向特定 URL 发出请求,例如客户端是否需要传递某些请求参数,哪些参数,以何种格式。

例如,它的形式如下:

{

    "routes" : [
        {"route": /api/users/create", "requestParams": ["name", "age", ... ]},
        ...
    ]

}

是的,我想通过这种方法,向尝试使用我创建的 REST 服务的客户提供某种文档。

我该怎么做?有没有一种至少访问路线的简单方法?

这样做会有什么问题吗?如果有,是哪些?

最佳答案

您可以使用RequestMappingHandlerMapping

注入(inject):

@Autowired
public RequestMappingHandlerMapping requestMappingHandlerMapping;

然后:

@RequestMapping("/endpoints")
public @ResponseBody
Object showEndpointsAction() throws SQLException
{
        return requestMappingHandlerMapping.getHandlerMethods().keySet().stream().map(t ->
               (t.getMethodsCondition().getMethods().size() == 0 ? "GET" : t.getMethodsCondition().getMethods().toArray()[0]) + " " +                    
               t.getPatternsCondition().getPatterns().toArray()[0]
        ).toArray();
 }

应列出所有端点 URL 路径。

关于java - 如何从 Controller 访问 REST API 的所有可用路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42509004/

相关文章:

java - 在安卓上捕捉通知

java - 如何替换数组中字符串的一部分?

java - 深度优先搜索中的 ArrayIndexOutOfBounds

java - 从 Android 手机调用基于 JSON 的 ASP.NET 网络服务

javascript - Google 条形图 - 如何使用 JSON 为每个条目获取 2 个不同的条形图

java - java中如何接收文件(servlet/jsp)

php - 将 $_POST ['whatever' 的参数发送到 PHP 文件时出现问题

mysql - Spring Data 在 OneToMany 上创建内部联接

java - 如何使用spring动态加载java中的配置

java - 您可以在 Spring 中完全禁用 CORS 支持吗?