如何从控制器访问REST API的所有可用路由?

时间:2017-02-28 12:39:20

标签: java json spring rest spring-boot

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

我知道我可以在例如Spring Boot应用程序启动时看到日志中的可用路由,但我不确定如何从Spring Boot控制器访问这些路径 。正如我所说,这些路由将作为JSON返回,如:

{

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

}

当然,提供额外的必需信息以向特定网址发出请求也是很好的,例如如果客户端需要传递某些请求参数,哪些参数以及采用哪种格式。

例如,它将是以下形式:

{

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

}

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

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

这样做会有问题吗?如果是,那是哪一个?

2 个答案:

答案 0 :(得分:4)

您可以使用RequestMappingHandlerMapping

注射它:

@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路径。

答案 1 :(得分:1)

您是否考虑过使用Swagger为您提供API的文档?使用简单,通过一些注释,您将获得完整的API文档。 Here您有如何配置Swagger的指南。我希望它对你有所帮助。