Định nghĩa HTTP request method cho controller trong Spring MVC

Annotation @RequestMapping ngoài cho phép chúng ta định nghĩa request URL, nó còn cho phép chúng ta định nghĩa HTTP request method cho controller trong Spring MVC bằng cách sử dụng thuộc tính method của nó. Trong bài viết này, chúng ta sẽ cùng tìm hiểu thêm về thuộc tính method này các bạn nhé!

Trong project mà mình đã tạo ở bài viết trước, phương thức home() đã định nghĩa một annotation @RequestMapping với giá trị của thuộc tính method là RequestMethod.GET.

Điều này có nghĩa người dùng truy cập request URL này với phương thức GET.

Enum org.springframework.web.bind.annotation.RequestMethod chính là đối tượng định nghĩa các request method cho Spring MVC.

Các method mà annotation @RequestMapping hỗ trợ được định nghĩa trong enum org.springframework.web.bind.annotation.RequestMethod như sau:

  • GET
  • HEAD
  • POST
  • PUT
  • PATCH
  • DELETE
  • OPTIONS
  • TRACE

Hãy xem thêm một ví dụ nữa nhé các bạn.

Như các bạn thấy, ở đây mình đã định nghĩa 1 request với POST method.

Mặc định khi sử dụng annotation @RequestMapping, nếu bạn không định nghĩa thuộc tính method thì request method sẽ là GET, POST hoặc HEAD. Ngoài những request method này, nếu các bạn request với các request method khác thì sẽ bị lỗi 405 ngay.

Ví dụ:

Kết quả:

Định nghĩa HTTP request method cho controller trong Spring MVC

Hoặc

Định nghĩa HTTP request method cho controller trong Spring MVC

Từ phiên bản 4.3 trở đi, Spring giới thiệu một số annotation để chúng ta dễ dàng khai báo request method hơn. Đó là các annotation sau:

  • Annotation @GetMapping cho method GET.
  • Annotation @PostMapping cho method POST.
  • Annotation @PutMapping cho method PUT.
  • Annotation @DeleteMapping cho method DELETE.
  • Annotation @PatchMapping cho method PATCH.

Bây giờ thì chúng ta không cần phải khai báo:

mà chỉ cần khai báo:

Nếu các bạn xem code của annotation @GetMapping thì các bạn sẽ hiểu tại sao chúng ta chỉ cần sử dụng annotation @GetMapping mà không cần sử dụng annotation @RequestMapping nữa.



4 thoughts on “Định nghĩa HTTP request method cho controller trong Spring MVC

  1. Avatar

    “Mặc định khi sử dụng annotation @RequestMapping, nếu bạn không định nghĩa thuộc tính method thì request method sẽ là GET”

    cái này ở spring 4.3 khác rồi phải ko anh? em thấy default method phải là ALL METHODS

Add Comment