Kinh Nghiệm Hướng dẫn @Getmapping là gì Chi Tiết

Bạn đang tìm kiếm từ khóa @Getmapping là gì được Cập Nhật vào lúc : 2022-01-30 22:11:19 . Với phương châm chia sẻ Mẹo Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.

@RequestMapping là một trong những annotation phổ cập nhất được sử dụng trong những ứng dụng Web Spring. Annotation này ánh xạ những HTTP request tới những phương thức xử lý của MVC và REST controller.

Nội dung chính

    Request Mapping cơ bảnKết luậnVideo liên quan
    Các khóa học lập. trình trò chơi mobile trực tuyến

    Những kiến thức và kỹ năng cơ bản về lập. trình web cần nắm vững

    10 kênh Youtube học tiếng Anh sẽ hỗ trợ bạn tăng cấp cải tiến vượt bậc trong năm 2022

    6 ngành nghề hot năm 2022, thời cơ tăng trưởng trong 5-10 năm tới

    Lập trình máy tính là gì? Khóa học lập. trình máy tính cho những người dân mới khởi đầu

Trong bài này, toàn bộ chúng ta sẽ thấy mức độ linh hoạt của annotation @RequestMapping khi được sử dụng để ánh xạ những phương thức xử lý trong Spring MVC controller.

Request Mapping cơ bản

Trong những ứng dụng Spring MVC, RequestDispatcher (Front Controller ở hình phía dưới) phụ trách định tuyến những HTTP request đến tới những phương thức xử lý của controller.

Để định thông số kỹ thuật ánh xạ những web request, toàn bộ chúng ta sử dụng annotation @RequestMapping.

Annotation @RequestMapping hoàn toàn có thể được vận dụng cho Lever lớp và / hoặc Lever phương thức trong controller.

Annotation @RequestMapping cấp lớp ánh xạ một đường dẫn hoặc mẫu request rõ ràng lên controller. Sau đó, ta hoàn toàn có thể vận dụng những annotation @RequestMapping cấp phương thức tương hỗ update để làm cho ánh xạ rõ ràng hơn riêng với những phương thức xử lý.

Dưới đấy là một ví dụ về Annotation @RequestMapping được vận dụng cho toàn bộ lớp và phương thức.

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(“://moiday/”)
String get()
//mapped to hostname:port/home/
return “Hello from get”;

@RequestMapping(“/index”)
String index()
//mapped to hostname:port/home/index/
return “Hello from index”;

123456789101112131415

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(“://moiday/”)String get()//mapped to hostname:port/home/return “Hello from get”;@RequestMapping(“/index”)String index()//mapped to hostname:port/home/index/return “Hello from index”;

Với mã trước đó, những request đến /home sẽ tiến hành xử lý bởi phương thức xử lý get() trong lúc request đến /home/index sẽ tiến hành xử lý bởi phương thức xử lý index().

@RequestMapping với nhiều URI

Chúng ta hoàn toàn có thể có nhiều ánh xạ yêu cầu (request mapping) cho một phương thức. Chúng ta thêm một annotation @RequestMapping với một list những giá trị.

@RestController
@RequestMapping(“/home”)
public class IndexController

@RequestMapping(value=””, “/page”, “page*”,”view/*,**/msg”)
String indexMultipleMapping()
return “Hello from index multiple mapping.”;

123456789

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(value=””, “/page”, “page*”,”view/*,**/msg”)String indexMultipleMapping()return “Hello from index multiple mapping.”;

Như bạn hoàn toàn có thể thấy trong mã này, @RequestMapping tương hỗ khai báo một list những giá trị cho thuộc tính value.

Các mẫu đường dẫn sau này là hợp lệ:

    localhost:8080/home
    localhost:8080/home/
    localhost:8080/home/page
    localhost:8080/home/pageabc
    localhost:8080/home/view/
    localhost:8080/home/view/view

@RequestMapping với @RequestParam

Annotation @RequestParam được sử dụng với @RequestMapping để link một tham số yêu cầu (request param) với tham số của phương thức xử lý.

Annotation @RequestParam hoàn toàn có thể có hoặc không còn mức giá trị. Giá trị chỉ định tham số yêu cầu cần phải ánh xạ tới tham số phương thức xử lý, như được hiển thị trong đoạn mã sau:

@RestController
@RequestMapping(“/home”)
public class IndexController

@RequestMapping(value = “/id”)
String getIdByValue(@RequestParam(“id”) String personId)
System.out.println(“ID is “+personId);
return “Get ID from query string of URL with value element”;

@RequestMapping(value = “/personId”)
String getId(@RequestParam String personId)
System.out.println(“ID is “+personId);
return “Get ID from query string of URL without value element”;

12345678910111213141516

@RestController @RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/id”) String getIdByValue(@RequestParam(“id”) String personId)System.out.println(“ID is “+personId);return “Get ID from query string of URL with value element”;@RequestMapping(value = “/personId”) String getId(@RequestParam String personId)System.out.println(“ID is “+personId);return “Get ID from query string of URL without value element”;

Trong đoạn mã trên, tham số yêu cầu id sẽ tiến hành ánh xạ tới tham số personId của phương thức xử lý getIdByValue().

Sau đấy là một mẫu đường dẫn hợp lệ:

localhost:8090/home/id?id=5

Giá trị của @RequestParam hoàn toàn có thể được bỏ qua nếu tên của tham số yêu cầu và tên của tham số trong phương thức xử lý giống nhau (Như riêng với phương thức xử lý getId trong ví dụ trên)

Sau đấy là một mẫu đường dẫn hợp lệ :

localhost:8090/home/personId?personId=5

Phần tử bắt buộc của @RequestParam xác lập xem giá trị tham số có bắt buộc hay là không.

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/name”)
String getName(@RequestParam(value = “person”, required = false) String personName)
return “Required element of request param”;

12345678

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/name”)String getName(@RequestParam(value = “person”, required = false)String personName)return “Required element of request param”;

Trong đoạn mã này, do thành phần bắt buộc được chỉ định là false, phương thức xử lý getNam () sẽ tiến hành gọi cho toàn bộ hai URL này:

    /home/name?person=xyz
    /home/name

Giá trị mặc định của @RequestParam được sử dụng để phục vụ giá trị mặc định khi tham số yêu cầu không được phục vụ hoặc trống.

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/name”)
String getName(@RequestParam(value = “person”, defaultValue = “John”) String personName )
return “Required element of request param”;

12345678

@RestController @RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/name”)String getName(@RequestParam(value = “person”, defaultValue = “John”) String personName )return “Required element of request param”;

Trong mã này, nếu tham số yêu cầu person là trống, phương thức xử lý getName() sẽ nhận giá trị mặc định John như thể tham số.

@RequestMapping với HTTP Method

Annotation @RequestMapping hoàn toàn có thể xử lý những phương thức yêu cầu HTTP, ví như GET, PUT, POST, DELETE và PATCH.

Theo mặc định, toàn bộ những yêu cầu sẽ là loại HTTP GET.

Để xác lập request mapping với một phương thức HTTP rõ ràng, bạn cần khai báo phương thức HTTP trong @RequestMapping bằng phương pháp sử dụng thành phần phương thức như sau.

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(method = RequestMethod.GET)
String get()
return “Hello from get”;

@RequestMapping(method = RequestMethod.DELETE)
String delete()
return “Hello from delete”;

@RequestMapping(method = RequestMethod.POST)
String post()
return “Hello from post”;

@RequestMapping(method = RequestMethod.PUT)
String put()
return “Hello from put”;

@RequestMapping(method = RequestMethod.PATCH)
String patch()
return “Hello from patch”;

123456789101112131415161718192021222324

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(method = RequestMethod.GET)String get()return “Hello from get”;@RequestMapping(method = RequestMethod.DELETE)String delete()return “Hello from delete”;@RequestMapping(method = RequestMethod.POST)String post()return “Hello from post”;@RequestMapping(method = RequestMethod.PUT)String put()return “Hello from put”;@RequestMapping(method = RequestMethod.PATCH)String patch()return “Hello from patch”;

Trong đoạn mã trên, thành phần phương thức của những annotation @RequestMapping chỉ ra loại phương thức HTTP của yêu cầu HTTP.

Tất cả những phương thức xử lý sẽ xử lý những yêu cầu đến cùng một URL (/home), nhưng sẽ tùy từng phương thức HTTP được sử dụng.

Ví dụ: một yêu cầu POST đến /home sẽ tiến hành xử lý bằng phương thức post(). Trong khi một yêu cầu DELETE đến /home sẽ tiến hành xử lý bằng phương thức delete().

Bạn hoàn toàn có thể thấy Spring MVC sẽ ánh xạ những phương thức khác bằng phương pháp sử dụng logic này.

Sử dụng @RequestMapping với Producible and Consumable

Các kiểu request mapping hoàn toàn có thể được số lượng giới hạn bằng phương pháp sử dụng những thành phần produces và consumes của annotation @RequestMapping.

Để tạo đối tượng người dùng trong Media Type được yêu cầu, bạn sử dụng thành phần produces của @RequestMapping kết phù thích hợp với annotation @ResponseBody.

Bạn cũng hoàn toàn có thể sử dụng đối tượng người dùng với Media Type được yêu cầu bằng phương pháp sử dụng thành phần consumes của @RequestMapping kết phù thích hợp với annotation @RequestBody.

Mã nguồn để sử dụng produces và consumes với @RequestMapping như sau:

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/prod”, produces = “application/JSON”)
@ResponseBody
String getProduces()
return “Produces attribute”;

@RequestMapping(value = “/cons”, consumes = “application/JSON”, “application/XML”)
String getConsumes()
return “Consumes attribute”;

1234567891011121314

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/prod”, produces = “application/JSON”)@ResponseBodyString getProduces()return “Produces attribute”;@RequestMapping(value = “/cons”, consumes = “application/JSON”, “application/XML”)String getConsumes()return “Consumes attribute”;

Trong mã nguồn này, phương thức xử lý getProduces() tạo ra tài liệu kiểu JSON. Phương thức xử lý getConsume() tạo ra tài liệu kiểu JSON cũng như XML.

@RequestMapping với Headers

Annotation @RequestMapping phục vụ headers để số lượng giới hạn request mapping nhờ vào những header có trong request.

Chúng ta hoàn toàn có thể chỉ định headers là myHeader = myValue.

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/head”, headers = “content- type=text/plain”)
String post()
return “Mapping applied along with headers”;

12345678

@RestController @RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/head”, headers = “content- type=text/plain”)String post() return “Mapping applied along with headers”;

Trong đoạn mã trên, thuộc tính headers của annotation @RequestMapping số lượng giới hạn ánh xạ vào phương thức post(). Với điều này, phương thức post() sẽ xử lý những yêu cầu đến /home/head có kiểu nội dung chỉ định văn bản thuần túy.

Chúng ta cũng hoàn toàn có thể chỉ ra nhiều giá trị headers như vậy này:

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/head”, headers = “content- type=text/plain”, “content-type=text/html”)
String post()
return “Mapping applied along with headers”;

12345678

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/head”, headers = “content-type=text/plain”, “content-type=text/html”) String post()return “Mapping applied along with headers”;

Ở đây cả text/plain cũng như text/html đều được đồng ý bởi phương thức xử lý post().

@RequestMapping với Request Parameters

Phần tử params của annotation @RequestMapping tiếp tục giúp số lượng giới hạn request mapping. Sử dụng thành phần params, bạn hoàn toàn có thể có nhiều phương thức xử lý yêu cầu xử lý những yêu cầu cho cùng một URL, tuy nhiên với những tham số rất khác nhau.

Bạn hoàn toàn có thể định nghĩa params là myParams = myValue. Bạn cũng hoàn toàn có thể sử dụng toán tử phủ định để chỉ định rằng một giá trị tham số rõ ràng không được tương hỗ trong request.

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/fetch”, params = “personId=10”)
String getParams(@RequestParam(“personId”) String id)
return “Fetched parameter using params attribute = “+id;

@RequestMapping(value = “/fetch”, params = “personId=20”)
String getParamsDifferent(@RequestParam(“personId”) String id)
return “Fetched parameter using params attribute = “+id;

123456789101112

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/fetch”, params = “personId=10”)String getParams(@RequestParam(“personId”) String id)return “Fetched parameter using params attribute = “+id;@RequestMapping(value = “/fetch”, params = “personId=20”)String getParamsDifferent(@RequestParam(“personId”) String id)return “Fetched parameter using params attribute = “+id;

Trong đoạn mã này, cả hai phương thức getParams() và getParamsDifferent() sẽ xử lý những request đến cùng một URL (/home/fetch) nhưng sẽ thực thi tùy thuộc vào thành phần params.

Ví dụ: khi URL là /home/fetch?Id=10, phương thức xử lý getParams() sẽ tiến hành thực thi với giá trị id 10 .. Đối với URL, localhost:8080/home/fetch?PersonId = 20, phương thức xử lý getParamsDifferent( ) được thực thi với giá trị id 20.

@RequestMapping với Dynamic URIs

Annotation @RequestMapping được sử dụng kết phù thích hợp với annotation @PathVaraible để xử lý những URI động. Trong trường hợp sử dụng này, những giá trị URI hoàn toàn có thể đóng vai trò là tham số của những phương thức xử lý trong controller. Bạn cũng hoàn toàn có thể sử dụng biểu thức chính quy để chỉ đồng ý những giá trị URI động khớp với biểu thức chính quy

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping(value = “/fetch/id”, method = RequestMethod.GET)
String getDynamicUriValue(@PathVariable String id)
System.out.println(“ID is “+id);
return “Dynamic URI parameter fetched”;

@RequestMapping(value = “/fetch/id:[a-z]+/name”, method = RequestMethod.GET)
String getDynamicUriValueRegex(@PathVariable(“name”) String name)
System.out.println(“Name is “+name);
return “Dynamic URI parameter fetched using regex”;

1234567891011121314

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping(value = “/fetch/id”, method = RequestMethod.GET)String getDynamicUriValue(@PathVariable String id)System.out.println(“ID is “+id);return “Dynamic URI parameter fetched”; @RequestMapping(value = “/fetch/id:[a-z]+/name”, method = RequestMethod.GET)String getDynamicUriValueRegex(@PathVariable(“name”) String name)System.out.println(“Name is “+name);return “Dynamic URI parameter fetched using regex”;

Trong mã này, phương thức getDynamicUriValue() sẽ thực thi một yêu cầu tới localhost:8080/home/fetch/10. Ngoài ra, tham số id của phương thức xử lý getDynamicUriValue() sẽ tiến hành điền với giá trị 10 một cách linh hoạt.

Phương thức getDynamicUriValueRegex() sẽ thực thi một yêu cầu tới localhost:8080/home/fetch/category/shirt. Tuy nhiên, một ngoại lệ sẽ tiến hành đưa ra cho yêu cầu /home/fetch/10/shirt vì nó không khớp với biểu thức thông thường.

@PathVariable hoạt động và sinh hoạt giải trí khác với @RequestParam. Bạn sử dụng @RequestParam để lấy những giá trị của những tham số truy vấn từ URI. Mặt khác, bạn sử dụng @PathVariable để lấy những giá trị tham số từ mẫu URI.

@RequestMapping Default Handler Method

Trong lớp controller, toàn bộ chúng ta hoàn toàn có thể có phương thức xử lý mặc định được thực thi khi có yêu cầu cho URI mặc định.

Dưới đấy là một ví dụ về một phương thức xử lý mặc định

@RestController
@RequestMapping(“/home”)
public class IndexController
@RequestMapping()
String default()
return “This is a default method for the class”;

12345678

@RestController@RequestMapping(“/home”)public class IndexController @RequestMapping()String default() return “This is a default method for the class”;

Trong mã này, một yêu cầu đến /home sẽ tiến hành xử lý theo phương thức default() vì annotation không riêng gì có định bất kỳ giá trị nào.

@RequestMapping Shortcuts

Spring 4.3 đã trình làng những biến thể ở tại mức phương thức, còn được gọi là những annotation tổng hợp của @RequestMapping. Các annotation này thể hiện tốt hơn những ngữ nghĩa của những phương thức xử lý. Chúng hoạt động và sinh hoạt giải trí như một trình bao bọc cho @RequestMapping và đang trở thành những phương pháp tiêu chuẩn để xác lập những điểm cuối.

Ví dụ: @GetMapping là một annotation tổng hợp hoạt động và sinh hoạt giải trí như một lối tắt cho @RequestMapping (method = RequestMethod.GET).

Các biến thể mức phương thức là:

    @GetMapping
    @PostMapping
    @PutMapping
    @DeleteMapping
    @PatchMapping

Các mã sau này đã cho toàn bộ chúng ta biết bằng phương pháp sử dụng những annotation này:

@RestController
@RequestMapping(“/home”)
public class IndexController
@GetMapping(“/person”)
public @ResponseBody ResponseEntity getPerson()
return new ResponseEntity(“Response from GET”, HttpStatus.OK);

@GetMapping(“/person/id”)
public @ResponseBody ResponseEntity. getPersonById(@PathVariable String id)
return new ResponseEntity(“Response from GET with id ” +id,HttpStatus.OK);

@PostMapping(“/person”)
public @ResponseBody ResponseEntity postPerson()
return new ResponseEntity(“Response from POST method”, HttpStatus.OK);

@PutMapping(“/person”)
public @ResponseBody ResponseEntity putPerson()
return new ResponseEntity(“Response from PUT method”, HttpStatus.OK);

@DeleteMapping(“/person”)
public @ResponseBody ResponseEntity deletePerson()
return new ResponseEntity(“Response from DELETE method”, HttpStatus.OK);

@PatchMapping(“/person”)
public @ResponseBody ResponseEntity patchPerson()
return new ResponseEntity(“Response from PATCH method”, HttpStatus.OK);

123456789101112131415161718192021222324252627282930313233

@RestController@RequestMapping(“/home”)public class IndexController @GetMapping(“/person”)public @ResponseBody ResponseEntity getPerson() return new ResponseEntity(“Response from GET”, HttpStatus.OK);@GetMapping(“/person/id”)public @ResponseBody ResponseEntity.getPersonById(@PathVariable String id)return new ResponseEntity(“Response from GET with id ” +id,HttpStatus.OK); @PostMapping(“/person”)public @ResponseBody ResponseEntity postPerson() return new ResponseEntity(“Response from POST method”, HttpStatus.OK);@PutMapping(“/person”)public @ResponseBody ResponseEntity putPerson() return new ResponseEntity(“Response from PUT method”, HttpStatus.OK);@DeleteMapping(“/person”)public @ResponseBody ResponseEntity deletePerson() return new ResponseEntity(“Response from DELETE method”, HttpStatus.OK);@PatchMapping(“/person”)public @ResponseBody ResponseEntity patchPerson() return new ResponseEntity(“Response from PATCH method”, HttpStatus.OK);

Trong mã này, mỗi phương thức xử lý được chú thích với những biến thể cấu thành của @RequestMapping.

Kết luận

Như bạn hoàn toàn có thể thấy trong nội dung bài viết này, annotation @RequestMapping rất linh hoạt. Bạn hoàn toàn có thể sử dụng annotation này để thông số kỹ thuật Spring MVC để xử lý nhiều trường hợp sử dụng. Nó hoàn toàn có thể được sử dụng để thông số kỹ thuật những yêu cầu website truyền thống cuội nguồn và những dịch vụ web RESTFul trong Spring MVC.

Author: Nguyễn Khách Tùng

Đăng ký nhận bộ tài liệu học Java trên 2 trang giấytại đây

Xem thêm:Java Coding Bootcamp là gì? Tổng quan về Java Coding Bootcamp

4344

Review @Getmapping là gì ?

Bạn vừa tìm hiểu thêm Post Với Một số hướng dẫn một cách rõ ràng hơn về Video @Getmapping là gì tiên tiến và phát triển nhất

Share Link Download @Getmapping là gì miễn phí

Pro đang tìm một số trong những ShareLink Download @Getmapping là gì miễn phí.

Hỏi đáp vướng mắc về @Getmapping là gì

Nếu sau khi đọc nội dung bài viết @Getmapping là gì vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Admin lý giải và hướng dẫn lại nha
#Getmapping #là #gì