Home > Software engineering >  How to handle if client request by GET method which is originally POST in controller in Spring Boot?
How to handle if client request by GET method which is originally POST in controller in Spring Boot?

Time:11-19

`@RequestMapping(value = "/abc", method = RequestMethod.POST)
public class TestController {
.....

}`

what if user will request /abc as GET Method how i can Handle Request?

CodePudding user response:

You will get an exception:

Request method 'GET' not supported

You can support multiple method (GET,POST...) by remove method in annotation.

@RequestMapping(value = "/abc")

CodePudding user response:

Yes it is possible. Post /abc can add data in List and redirect:/abc redirect to get mapping value = "/abc", method = RequestMethod.GET and pass data through model to view.

Request URL for GET and POST are same but first redirect to the url and second is send data to view

Controller

private List<String> someData = new ArrayList<>();

@RequestMapping(value = "/abc", method = RequestMethod.POST)
public String TestControllerPost(String something) {
    someData.add(something);
    return "redirect:/abc"; // going to /abc get url
}

@RequestMapping(value = "/abc", method = RequestMethod.GET)
public String TestControllerGet(Model model) {
    model.addAttribute("someData", someData);
    return "index";
}

View as Thymeleaf(index.html)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

<body>
<form action="/abc" method="post">
  <span>User Name:</span>
  <input type="text" name="name"/> <br/>
  <input type="submit" value="Submit">
</form>
<br>
<h3>Get Data</h3>
  <p th:each="data: ${someData}">
      <span th:text="${data}"></span>
  </p>
</body>
</html>
  • Related