映射 (mappings
)
mappings
)
mappings
端点提供了关于应用程序的请求映射的信息。
获取映射
要检索映射,请向 /actuator/mappings
发送一个 GET
请求,如下所示的基于 curl 的示例:
$ curl 'http://localhost:45117/actuator/mappings' -i -X GET \
-H 'accept-encoding: gzip' \
-H 'user-agent: ReactorNetty/1.2.2' \
-H 'accept: */*'
得到的响应类似于以下内容:
HTTP/1.1 200 OK
Content-Type: application/vnd.spring-boot.actuator.v3+json
Transfer-Encoding: chunked
Date: Thu, 23 Jan 2025 11:06:58 GMT
Content-Length: 5342
{
"contexts" : {
"application" : {
"mappings" : {
"dispatcherServlets" : {
"dispatcherServlet" : [ {
"handler" : "Actuator web endpoint 'mappings'",
"predicate" : "{GET [/actuator/mappings], produces [application/vnd.spring-boot.actuator.v3+json || application/vnd.spring-boot.actuator.v2+json || application/json]}",
"details" : {
"handlerMethod" : {
"className" : "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping.OperationHandler",
"name" : "handle",
"descriptor" : "(Ljakarta/servlet/http/HttpServletRequest;Ljava/util/Map;)Ljava/lang/Object;"
},
"requestMappingConditions" : {
"consumes" : [ ],
"headers" : [ ],
"methods" : [ "GET" ],
"params" : [ ],
"patterns" : [ "/actuator/mappings" ],
"produces" : [ {
"mediaType" : "application/vnd.spring-boot.actuator.v3+json",
"negated" : false
}, {
"mediaType" : "application/vnd.spring-boot.actuator.v2+json",
"negated" : false
}, {
"mediaType" : "application/json",
"negated" : false
} ]
}
}
}, {
"handler" : "Actuator root web endpoint",
"predicate" : "{GET [/actuator], produces [application/vnd.spring-boot.actuator.v3+json || application/vnd.spring-boot.actuator.v2+json || application/json]}",
"details" : {
"handlerMethod" : {
"className" : "org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping.WebMvcLinksHandler",
"name" : "links",
"descriptor" : "(Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/http/HttpServletResponse;)Ljava/util/Map;"
},
"requestMappingConditions" : {
"consumes" : [ ],
"headers" : [ ],
"methods" : [ "GET" ],
"params" : [ ],
"patterns" : [ "/actuator" ],
"produces" : [ {
"mediaType" : "application/vnd.spring-boot.actuator.v3+json",
"negated" : false
}, {
"mediaType" : "application/vnd.spring-boot.actuator.v2+json",
"negated" : false
}, {
"mediaType" : "application/json",
"negated" : false
} ]
}
}
}, {
"handler" : "org.springframework.boot.actuate.autoconfigure.endpoint.web.documentation.MappingsEndpointServletDocumentationTests$ExampleController#example()",
"predicate" : "{POST [/], params [a!=alpha], headers [X-Custom=Foo], consumes [application/json || !application/xml], produces [text/plain]}",
"details" : {
"handlerMethod" : {
"className" : "org.springframework.boot.actuate.autoconfigure.endpoint.web.documentation.MappingsEndpointServletDocumentationTests.ExampleController",
"name" : "example",
"descriptor" : "()Ljava/lang/String;"
},
"requestMappingConditions" : {
"consumes" : [ {
"mediaType" : "application/json",
"negated" : false
}, {
"mediaType" : "application/xml",
"negated" : true
} ],
"headers" : [ {
"name" : "X-Custom",
"value" : "Foo",
"negated" : false
} ],
"methods" : [ "POST" ],
"params" : [ {
"name" : "a",
"value" : "alpha",
"negated" : true
} ],
"patterns" : [ "/" ],
"produces" : [ {
"mediaType" : "text/plain",
"negated" : false
} ]
}
}
}, {
"handler" : "ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]]",
"predicate" : "/webjars/**"
}, {
"handler" : "ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]",
"predicate" : "/**"
} ]
},
"servletFilters" : [ {
"servletNameMappings" : [ ],
"urlPatternMappings" : [ "/*" ],
"name" : "requestContextFilter",
"className" : "org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter"
}, {
"servletNameMappings" : [ ],
"urlPatternMappings" : [ "/*" ],
"name" : "formContentFilter",
"className" : "org.springframework.boot.web.servlet.filter.OrderedFormContentFilter"
} ],
"servlets" : [ {
"mappings" : [ "/" ],
"name" : "dispatcherServlet",
"className" : "org.springframework.web.servlet.DispatcherServlet"
} ]
}
}
}
}
响应结构
响应中包含应用程序映射的详细信息。响应中找到的项目取决于 Web 应用程序的类型(反应式或基于 Servlet)。下表描述了响应中常见元素的结构:
Path | Type | 说明 |
---|---|---|
contexts | Object | 按 id 键的应用程序上下文。 |
contexts.*.mappings | Object | 上下文中的映射,按映射类型键。 |
contexts.*.mappings.dispatcherServlets | Object | 如果有的话,调度器 Servlet 映射。 |
contexts.*.mappings.servletFilters | Array | 如果有的话,Servlet 过滤器映射。 |
contexts.*.mappings.servlets | Array | 如果有的话,Servlet 映射。 |
contexts.*.mappings.dispatcherHandlers | Object | 如果有的话,调度器处理程序映射。 |
contexts.*.parentId | String | 如果有的话,父应用程序上下文的 id。 |
contexts.*.mappings
中可能包含的条目在以下章节中描述。
分发器 Servlets 的响应结构
在使用 Spring MVC 时,响应中包含任何 DispatcherServlet
请求映射的详细信息,位于 contexts.*.mappings.dispatcherServlets
下。下表描述了响应这一部分的结构:
Path | Type | Description |
---|---|---|
* | Array | 分发器 servlet 映射(如果有),按分发器 servlet bean 名称键控。 |
*.[].details | Object | 关于映射的附加实现特定详细信息。可选。 |
*.[].handler | String | 映射的处理器。 |
*.[].predicate | String | 映射的谓词。 |
*.[].details.handlerMethod | Object | 如果有的话,处理该映射请求的方法的详细信息。 |
*.[].details.handlerMethod.className | Varies | 方法的类的完全限定名。 |
*.[].details.handlerMethod.name | Varies | 方法的名称。 |
*.[].details.handlerMethod.descriptor | Varies | Java 语言规范中指定的方法描述符。 |
*.[].details.requestMappingConditions | Object | 请求映射条件的详细信息。 |
*.[].details.requestMappingConditions.consumes | Varies | 消费条件的详细信息 |
*.[].details.requestMappingConditions.consumes.[].mediaType | Varies | 消费的媒体类型。 |
*.[].details.requestMappingConditions.consumes.[].negated | Varies | 媒体类型是否被否定。 |
*.[].details.requestMappingConditions.headers | Varies | 标头条件的详细信息。 |
*.[].details.requestMappingConditions.headers.[].name | Varies | 标头的名称。 |
*.[].details.requestMappingConditions.headers.[].value | Varies | 如果有的话,标头所需的值。 |
*.[].details.requestMappingConditions.headers.[].negated | Varies | 值是否被否定。 |
*.[].details.requestMappingConditions.methods | Varies | 处理的 HTTP 方法。 |
*.[].details.requestMappingConditions.params | Varies | 参数条件的详细信息。 |
*.[].details.requestMappingConditions.params.[].name | Varies | 参数的名称。 |
*.[].details.requestMappingConditions.params.[].value | Varies | 如果有的话,参数所需的值。 |
*.[].details.requestMappingConditions.params.[].negated | Varies | 值是否被否定。 |
*.[].details.requestMappingConditions.patterns | Varies | 识别映射处理的路径的模式。 |
*.[].details.requestMappingConditions.produces | Varies | 生成条件的详细信息。 |
*.[].details.requestMappingConditions.produces.[].mediaType | Varies | 生成的媒体类型。 |
*.[].details.requestMappingConditions.produces.[].negated | Varies | 媒体类型是否被否定。 |
Servlets 响应结构
当使用Servlet堆栈时,响应包含contexts.*.mappings.servlets
下的任何Servlet
映射的详细信息。下表描述了响应这一部分的结构:
Path | Type | 描述 |
---|---|---|
[].mappings | Array | Servlet 的映射。 |
[].name | String | Servlet 的名称。 |
[].className | String | Servlet 的类名。 |
Servlet 过滤器响应结构
当使用Servlet堆栈时,响应中包含contexts.*.mappings.servletFilters
下的任何Filter
映射的详细信息。下表描述了响应这一部分的结构:
Path | Type | 描述 |
---|---|---|
[].servletNameMappings | Array | 过滤器映射到的 Servlet 名称。 |
[].urlPatternMappings | Array | 过滤器映射到的 URL 模式。 |
[].name | String | 过滤器的名称。 |
[].className | String | 过滤器的类名 |
调度处理器响应结构
当使用 Spring WebFlux 时,响应中包含任何 DispatcherHandler
请求映射的详细信息,位于 contexts.*.mappings.dispatcherHandlers
下。下表描述了响应这一部分的结构:
Path | Type | Description |
---|---|---|
* | Array | 分发处理器映射(如果有),以分发处理器 bean 名称为键。 |
*.[].details | Object | 关于映射的附加特定实现详细信息。可选。 |
*.[].handler | String | 映射的处理器。 |
*.[].predicate | String | 映射的谓词。 |
*.[].details.requestMappingConditions | Object | 请求映射条件的详细信息。 |
*.[].details.requestMappingConditions.consumes | Varies | 消费条件的详细信息 |
*.[].details.requestMappingConditions.consumes.[].mediaType | Varies | 消费的媒体类型。 |
*.[].details.requestMappingConditions.consumes.[].negated | Varies | 媒体类型是否被否定。 |
*.[].details.requestMappingConditions.headers | Varies | 头条件的详细信息。 |
*.[].details.requestMappingConditions.headers.[].name | Varies | 头名称。 |
*.[].details.requestMappingConditions.headers.[].value | Varies | 头的所需值(如果有)。 |
*.[].details.requestMappingConditions.headers.[].negated | Varies | 值是否被否定。 |
*.[].details.requestMappingConditions.methods | Varies | 处理的 HTTP 方法。 |
*.[].details.requestMappingConditions.params | Varies | 参数条件的详细信息。 |
*.[].details.requestMappingConditions.params.[].name | Varies | 参数名称。 |
*.[].details.requestMappingConditions.params.[].value | Varies | 参数的所需值(如果有)。 |
*.[].details.requestMappingConditions.params.[].negated | Varies | 值是否被否定。 |
*.[].details.requestMappingConditions.patterns | Varies | 标识映射处理路径的模式。 |
*.[].details.requestMappingConditions.produces | Varies | 生成条件的详细信息。 |
*.[].details.requestMappingConditions.produces.[].mediaType | Varies | 生成的媒体类型。 |
*.[].details.requestMappingConditions.produces.[].negated | Varies | 媒体类型是否被否定。 |
*.[].details.handlerMethod | Object | 如果有的话,处理此映射请求的方法的详细信息。 |
*.[].details.handlerMethod.className | String | 方法的类的完全限定名。 |
*.[].details.handlerMethod.name | String | 方法名称。 |
*.[].details.handlerMethod.descriptor | String | Java 语言规范中指定的方法描述符。 |
*.[].details.handlerFunction | Object | 如果有的话,处理此映射请求的函数的详细信息。 |
*.[].details.handlerFunction.className | String | 函数的类的完全限定名。 |