Spring Boot: @RequestBody not applicable to method


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {

    @RequestMapping("/path")
    @RequestBody
    public String message() {
        return "hello there!";
    }
}
Compilation Error: Annotation interface not applicable to this kind of declaration.

If you are trying to do something like the above, you will get a compilation error "@RequestBody not applicable to method" as the request body annotation does not apply to a method declaration of a @Controller or @RestController.

There could be a few solutions here!


You should be using @ResponseBody here?

Fix - RequestBody not applicable to method

If you want to return a serialized HTTP response for this request directly as a response body instead of a view (such as a JSP file) you may have mistakenly used @RequestBody instead of @ ResponseBody.

@Controller
public class MyController {

    @RequestMapping("/path")
    @ResponseBody
    public String message() {
        return "hello there!";
    }
}

If you use the annotation @RestController you need not need to use @ResponseBody as it is already present in the RestController annotation code.

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

Correct way of using @RequestBody in Spring Framework

The correct way to use @RequestBody in Spring is to apply it to a method parameter that you want to bind to the request body of an HTTP request. In other words, you should use @RequestBody when you want to read the content of an incoming HTTP request, such as when processing a POST, PUT, or PATCH request.

@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello(@RequestBody String requestBody) {
  return "hello";
}

Facing issues? Have Questions? Post them here! I am happy to answer!

Author Info:

Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.

Follow him on: X

You can also reach out to him via e-mail: rakesh@code2care.org



















Copyright © Code2care 2024 | Privacy Policy | About Us | Contact Us | Sitemap