{"record":{"id":"4d1f964a298f4cdf","repo":"quarkusio/quarkus","slug":"unsupported-http-method-method-for-requestmap","errorCode":null,"errorMessage":"Unsupported HTTP method '<method>' for @RequestMapping. Offending method is '<class>#<method>'","messagePattern":"Unsupported HTTP method '<method>' for @RequestMapping\\. Offending method is '<class>#<method>'","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/spring-web/resteasy-reactive/deployment/src/main/java/io/quarkus/spring/web/resteasy/reactive/deployment/SpringWebResteasyReactiveProcessor.java","lineNumber":245,"sourceCode":"                String path = null;\n                String[] produces = null;\n                String[] consumes = null;\n\n                AnnotationInstance mappingAnnotationInstance = methodInfo.annotation(REQUEST_MAPPING);\n                if (mappingAnnotationInstance != null) {\n                    AnnotationValue methodValue = mappingAnnotationInstance.value(\"method\");\n                    if (methodValue == null) {\n                        jaxRSMethodAnnotation = ResteasyReactiveDotNames.GET;\n                    } else {\n                        String[] methods = methodValue.asEnumArray();\n                        if (methods.length > 1) {\n                            throw new IllegalArgumentException(\n                                    \"Usage of multiple methods using '@RequestMapping' is not allowed. Offending method is '\"\n                                            + methodInfo.declaringClass().name() + \"#\" + methodInfo.name() + \"'\");\n                        }\n                        DotName methodDotName = ResteasyReactiveScanner.METHOD_TO_BUILTIN_HTTP_ANNOTATIONS.get(methods[0]);\n                        if (methodDotName == null) {\n                            throw new IllegalArgumentException(\n                                    \"Unsupported HTTP method '\" + methods[0] + \"' for @RequestMapping. Offending method is '\"\n                                            + methodInfo.declaringClass().name() + \"#\" + methodInfo.name() + \"'\");\n                        }\n                        jaxRSMethodAnnotation = methodDotName;\n                    }\n                } else {\n                    if (methodInfo.hasAnnotation(GET_MAPPING)) {\n                        jaxRSMethodAnnotation = ResteasyReactiveDotNames.GET;\n                        mappingAnnotationInstance = methodInfo.annotation(GET_MAPPING);\n                    } else if (methodInfo.hasAnnotation(POST_MAPPING)) {\n                        jaxRSMethodAnnotation = ResteasyReactiveDotNames.POST;\n                        mappingAnnotationInstance = methodInfo.annotation(POST_MAPPING);\n                    } else if (methodInfo.hasAnnotation(PUT_MAPPING)) {\n                        jaxRSMethodAnnotation = ResteasyReactiveDotNames.PUT;\n                        mappingAnnotationInstance = methodInfo.annotation(PUT_MAPPING);\n                    } else if (methodInfo.hasAnnotation(DELETE_MAPPING)) {\n                        jaxRSMethodAnnotation = ResteasyReactiveDotNames.DELETE;\n                        mappingAnnotationInstance = methodInfo.annotation(DELETE_MAPPING);","sourceCodeStart":227,"sourceCodeEnd":263,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/spring-web/resteasy-reactive/deployment/src/main/java/io/quarkus/spring/web/resteasy/reactive/deployment/SpringWebResteasyReactiveProcessor.java#L227-L263","documentation":"The reactive Spring Web processor maps the RequestMethod enum value in @RequestMapping to a built-in JAX-RS verb annotation via METHOD_TO_BUILTIN_HTTP_ANNOTATIONS. An HTTP method name outside the supported set (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) has no mapping and fails the build with this message naming the offending class and method.","triggerScenarios":"Using @RequestMapping(method = RequestMethod.X) where X is a custom/typo'd or unsupported verb, e.g. RequestMethod.TRACE or a misspelled value.","commonSituations":"Typos in method names; Spring code using rarely used verbs; custom RequestMapping meta-annotations that inject unexpected values.","solutions":["Use a standard HTTP verb (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) in @RequestMapping.","Use the shortcut annotations (@GetMapping, @PostMapping, etc.) to avoid naming mistakes.","For nonstandard verbs, fall back to plain JAX-RS @HttpMethod with a custom annotation instead of Spring annotations."],"exampleFix":"// before\n@RequestMapping(value = \"/data\", method = RequestMethod.GTES) // typo\n\n// after\n@GetMapping(\"/data\")","handlingStrategy":"validation","validationCode":"// allowed: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS\n// verify: @RequestMapping(method = RequestMethod.GET)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the typed RequestMethod enum values exactly; avoid typos by using shortcut annotations.","Keep a migration checklist that maps each Spring mapping annotation to the Quarkus-supported verb set."],"tags":["quarkus","spring-web","resteasy-reactive","http-method","build-time"],"backgroundTag":"unsupported-http-method","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}