Spring 返回RequestMethod GET上的所有可用映射

Spring 返回RequestMethod GET上的所有可用映射,spring,rest,spring-mvc,spring-boot,Spring,Rest,Spring Mvc,Spring Boot,我正在学习SpringBoot和使用JPA的REST服务器。 对于我的RestControllers,我希望在基页上有这样的行为:当某人转到基页时,他们将能够看到基页下所有可用的requestmapping @RestController @RequestMapping("/food") public class FoodRestController { @RequestMapping(value = "/all", method = RequestMethod.GET) @ResponseB

我正在学习SpringBoot和使用JPA的REST服务器。 对于我的RestControllers,我希望在基页上有这样的行为:当某人转到基页时,他们将能够看到基页下所有可用的requestmapping

@RestController
@RequestMapping("/food")
public class FoodRestController {

@RequestMapping(value = "/all", method = RequestMethod.GET)
@ResponseBody
public Iterable<Food> printAllFoods() {
    return foodRepository.findAll();
}

@RequestMapping(value = "/add", method = RequestMethod.POST)
public ResponseEntity<?> addFood(@RequestBody Food f) {
    foodRepository.save(f);

    HttpHeaders httpHeaders = new HttpHeaders();
    return new ResponseEntity<Food>(f, httpHeaders, HttpStatus.CREATED);
}
@RestController
@请求映射(“/food”)
公共类FoodRestController{
@RequestMapping(value=“/all”,method=RequestMethod.GET)
@应答器
公共食品{
return foodRepository.findAll();
}
@RequestMapping(value=“/add”,method=RequestMethod.POST)
公共响应添加食物(@RequestBody Food f){
食品储备保存(f);
HttpHeaders HttpHeaders=新的HttpHeaders();
返回新的ResponseEntity(f,httpHeaders,HttpStatus.CREATED);
}
因此,对于上面提到的“localhost:8080/food”将给出一个显示无效端点的页面,可能的端点是localhost:8080/food/all或localhost:8080/food/add。
我可以使用GET创建一个RequestMapping并将其作为正文返回,但这将是一个手动输入的响应。想知道Spring是否提供类似的功能,SpringBoot执行器已经有了这样的功能。添加对的依赖项,启动应用程序并将浏览器指向:

这将产生如下内容(假设为JSON),其中包含作为项目一部分的所有映射(也包括Spring端点!)

{
...
“{[/refresh]、方法=[POST]、参数=[]、头=[]、使用=[]、产生=[]、自定义=[]}”:{
“bean”:“endpointHandlerMapping”,
“方法”:“public java.lang.Object org.springframework.cloud.endpoint.GenericPostablevcEndpoint.invoke()”
},
“{[/restart],方法=[POST],参数=[],头=[],使用=[],产生=[],自定义=[]]:{
“bean”:“endpointHandlerMapping”,
“方法”:“public java.lang.Object org.springframework.cloud.context.restart.RestartMvcEndpoint.invoke()”
},
“{[/configprops]、方法=[GET]、参数=[]、头=[]、消耗=[]、生产=[]、自定义=[]]:{
“bean”:“endpointHandlerMapping”,
“方法”:“public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()”
},
“{[/env],方法=[POST],参数=[],头=[],使用=[],产生=[],自定义=[]]:{
“bean”:“endpointHandlerMapping”,
“方法”:“public java.lang.Object org.springframework.cloud.context.environment.EnvironmentManagerMvcEndpoint.value(java.util.Map)”
},
...
}
此代码段显示了一些其他执行器端点可用的少量映射

我知道您的要求有点不同,因此如果此设置不完全符合您的需要,您应该能够创建自己的端点这可以做一些类似的事情,只需浏览。为mappings端点完成大部分工作的特定文件是。

您也可以使用。它实际上是一个文档框架。它还围绕一个漂亮的UI构建,以试用随文档一起提供的API

{
  ...
    "{[/refresh],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}": {
        "bean": "endpointHandlerMapping",
        "method": "public java.lang.Object org.springframework.cloud.endpoint.GenericPostableMvcEndpoint.invoke()"
    },
    "{[/restart],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}": {
        "bean": "endpointHandlerMapping",
        "method": "public java.lang.Object org.springframework.cloud.context.restart.RestartMvcEndpoint.invoke()"
    },
    "{[/configprops],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}": {
        "bean": "endpointHandlerMapping",
        "method": "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()"
    },
    "{[/env],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}": {
        "bean": "endpointHandlerMapping",
        "method": "public java.lang.Object org.springframework.cloud.context.environment.EnvironmentManagerMvcEndpoint.value(java.util.Map<java.lang.String, java.lang.String>)"
    },
  ...
}