Both Spring MVC and Spring WebFlux support this annotation through a
RequestMappingHandlerMapping and RequestMappingHandlerAdapter
in their respective modules and package structures. For the exact list of
supported handler method arguments and return types in each, please use the
reference documentation links below:
Note
This annotation can be used both at the class and
at the method level. In most cases, at the method level applications will
prefer to use one of the HTTP method specific variants
@GetMapping, @PostMapping,
@PutMapping, @DeleteMapping, or
@PatchMapping.
Note
This annotation cannot be used in conjunction with
other @RequestMapping annotations that are declared on the same element
(class, interface, or method). If multiple @RequestMapping annotations
are detected on the same element, a warning will be logged, and only the first
mapping will be used. This also applies to composed @RequestMapping
annotations such as @GetMapping, @PostMapping, etc.
Note
When using controller interfaces (e.g. for AOP proxying),
make sure to consistently put all your mapping annotations — such
as @RequestMapping and @SessionAttributes — on
the controller interface rather than on the implementation class.
GetMapping, PostMapping, PutMapping, DeleteMapping, PatchMapping
| Modifier and Type | Method and Description |
|---|---|
| public String[] | |
| public String[] | |
| public RequestMethod[] | method()
The HTTP request methods to map to, narrowing the primary mapping: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. |
| public String | |
| public String[] | |
| public String[] | |
| public String[] | |
| public String[] |
| consumes | back to summary |
|---|---|
| public String[] consumes() Narrows the primary mapping by media types that can be consumed by the
mapped handler. Consists of one or more media types one of which must
match to the request
consumes = "text/plain"
consumes = {"text/plain", "application/*"}
consumes = MediaType.TEXT_PLAIN_VALUE
If a declared media type contains a parameter, and if the
Expressions can be negated by using the "!" operator, as in
"!text/plain", which matches all requests with a Supported at the type level as well as at the method level! If specified at both levels, the method level consumes condition overrides the type level condition. | |
| headers | back to summary |
|---|---|
| public String[] headers() The headers of the mapped request, narrowing the primary mapping. Same format for any environment: a sequence of "My-Header=myValue" style expressions, with a request only mapped if each such header is found to have the given value. Expressions can be negated by using the "!=" operator, as in "My-Header!=myValue". "My-Header" style expressions are also supported, with such headers having to be present in the request (allowed to have any value). Finally, "!My-Header" style expressions indicate that the specified header is not supposed to be present in the request. Also supports media type wildcards (*), for headers such as Accept and Content-Type. For instance, @RequestMapping(value = "/something", headers = "content-type=text/*")will match requests with a Content-Type of "text/html", "text/plain", etc. Supported at the type level as well as at the method level! When used at the type level, all method-level mappings inherit this header restriction.
| |
| method | back to summary |
|---|---|
| public RequestMethod[] method() The HTTP request methods to map to, narrowing the primary mapping: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. Supported at the type level as well as at the method level! When used at the type level, all method-level mappings inherit this HTTP method restriction. | |
| name | back to summary |
|---|---|
| public String name() Assign a name to this mapping. Supported at the type level as well as at the method level! When used on both levels, a combined name is derived by concatenation with "#" as separator. | |
| params | back to summary |
|---|---|
| public String[] params() The parameters of the mapped request, narrowing the primary mapping. Same format for any environment: a sequence of "myParam=myValue" style expressions, with a request only mapped if each such parameter is found to have the given value. Expressions can be negated by using the "!=" operator, as in "myParam!=myValue". "myParam" style expressions are also supported, with such parameters having to be present in the request (allowed to have any value). Finally, "!myParam" style expressions indicate that the specified parameter is not supposed to be present in the request. Supported at the type level as well as at the method level! When used at the type level, all method-level mappings inherit this parameter restriction. | |
| path | back to summary |
|---|---|
| public String[] path() The path mapping URIs — for example, Ant-style path patterns are also supported (e.g. Supported at the type level as well as at the method level! When used at the type level, all method-level mappings inherit this primary mapping, narrowing it for a specific handler method. Note A handler method that is not mapped to any path explicitly is effectively mapped to an empty path.
| |
| produces | back to summary |
|---|---|
| public String[] produces() Narrows the primary mapping by media types that can be produced by the
mapped handler. Consists of one or more media types one of which must
be chosen via content negotiation against the "acceptable" media types
of the request. Typically those are extracted from the
produces = "text/plain"
produces = {"text/plain", "application/*"}
produces = MediaType.TEXT_PLAIN_VALUE
produces = "text/plain;charset=UTF-8"
If a declared media type contains a parameter (e.g. "charset=UTF-8", "type=feed", "type=entry") and if a compatible media type from the request has that parameter too, then the parameter values must match. Otherwise, if the media type from the request does not contain the parameter, it is assumed the client accepts any value. Expressions can be negated by using the "!" operator, as in "!text/plain",
which matches all requests with a Supported at the type level as well as at the method level! If specified at both levels, the method level produces condition overrides the type level condition.
| |
| value | back to summary |
|---|---|
| public String[] value() The path mapping URIs — for example, This is an alias for See
| |