映射 (mappings)
mappings
端点提供有关应用程序请求映射的信息。
检索映射
要检索映射,请发送 GET
请求到 /actuator/mappings
,如下基于 curl 的示例所示:
curl 'http://localhost:38761/actuator/mappings' -i -X GET \
-H 'accept-encoding: gzip' \
-H 'user-agent: ReactorNetty/1.1.22' \
-H 'accept: */*'
得到的响应类似于以下内容:
HTTP/1.1 200 OK Content-Type: application/vnd.spring-boot.actuator.v3+json Transfer-Encoding: chunked Date: Thu, 22 Aug 2024 16:50:26 GMT Content-Length: 5342 { "contexts" : { "application" : { "mappings" : { "dispatcherServlets" : { "dispatcherServlet" : [ { "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" : "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" : "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)。下表描述了响应的通用元素的结构:
路径 |
类型 |
描述 |
|
|
按 ID 键入的应用程序上下文。 |
|
|
上下文中的映射,按映射类型键入。 |
|
|
DispatcherServlet 映射(如果有)。 |
|
|
Servlet 过滤器映射(如果有)。 |
|
|
Servlet 映射(如果有)。 |
|
|
DispatcherHandler 映射(如果有)。 |
|
|
父应用程序上下文的 ID(如果有)。 |
以下是可能在 contexts.*.mappings
中找到的条目的描述。
Dispatcher Servlets 响应结构
在使用 Spring MVC 时,响应包含 contexts.*.mappings.dispatcherServlets
下的任何 DispatcherServlet
请求映射的详细信息。下表描述了该部分响应的结构:
路径 |
类型 |
描述 |
|
|
DispatcherServlet 映射(如果有),按 DispatcherServlet bean 名称键入。 |
|
|
有关映射的其他实现特定的详细信息。可选。 |
|
|
映射的处理程序。 |
|
|
映射的谓词。 |
|
|
处理此映射请求的方法的详细信息(如果有)。 |
|
|
方法的完全限定名称。 |
|
|
方法的名称。 |
|
|
按照 Java 语言规范指定的方法描述符。 |
|
|
请求映射条件的详细信息。 |
|
|
consumes 条件的详细信息。 |
|
|
消耗的媒体类型。 |
|
|
媒体类型是否被否定。 |
|
|
headers 条件的详细信息。 |
|
|
头的名称。 |
|
|
头的必需值(如果有)。 |
|
|
值是否被否定。 |
|
|
处理的 HTTP 方法。 |
|
|
params 条件的详细信息。 |
|
|
参数的名称。 |
|
|
参数的必需值(如果有)。 |
|
|
值是否被否定。 |
|
|
识别映射处理路径的模式。 |
|
|
produces 条件的详细信息。 |
|
|
生成的媒体类型。 |
|
|
媒体类型是否被否定。 |
Servlets 响应结构
在使用 Servlet
堆栈时,响应包含 contexts.*.mappings.servlets
下的任何 Servlet 映射的详细信息。下表描述了该部分响应的结构:
路径 |
类型 |
描述 |
|
|
Servlet 的映射。 |
|
|
Servlet 的名称。 |
|
|
Servlet 的类名。 |
Servlet Filters 响应结构
在使用 Servlet 堆栈时,响应包含 contexts.*.mappings.servletFilters
下的任何 Filter
映射的详细信息。下表描述了该部分响应的结构:
路径 |
类型 |
描述 |
|
|
过滤器映射的 Servlet 名称。 |
|
|
过滤器映射的 URL 模式。 |
|
|
过滤器的名称。 |
|
|
过滤器的类名。 |
Dispatcher Handlers 响应结构
在使用 Spring WebFlux 时,响应包含 contexts.*.mappings.dispatcherHandlers
下的任何 DispatcherHandler
请求映射的详细信息。下表描述了该部分响应的结构:
路径 |
类型 |
描述 |
|
|
DispatcherHandler 映射(如果有),按 DispatcherHandler bean 名称键入。 |
|
|
有关映射的其他实现特定的详细信息。可选。 |
|
|
映射的处理程序。 |
|
|
映射的谓词。 |
|
|
请求映射条件的详细信息。 |
|
|
consumes 条件的详细信息。 |
|
|
消耗的媒体类型。 |
|
|
媒体类型是否被否定。 |
|
|
headers 条件的详细信息。 |
|
|
头的名称。 |
|
|
头的必需值(如果有)。 |
|
|
值是否被否定。 |
|
|
处理的 HTTP 方法。 |
|
|
params 条件的详细信息。 |
|
|
参数的名称。 |
|
|
参数的必需值(如果有)。 |
|
|
值是否被否定。 |
|
|
识别映射处理路径的模式。 |
|
|
produces 条件的详细信息。 |
|
|
生成的媒体类型。 |
|
|
媒体类型是否被否定。 |
|
|
处理此映射请求的方法的详细信息(如果有)。 |
|
|
方法的完全限定名称。 |
|
|
方法的名称。 |
|
|
按照 Java 语言规范指定的方法描述符。 |
|
|
处理此映射请求的函数的详细信息(如果有)。 |
|
|
函数的完全限定名称。 |