1 Kasım 2018 Perşembe

SpringMVC @PathVariable Anotasyonu - URL Yolundaki Değere Erişmek İçindir

Giriş
Şu satırı dahil ederiz.
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
- Bu anotayon ile @RequestMapping,@GetMapping anotasyonları ilişkilidir. Bu anotasyonlarla süslü parantez içindeki path variable değişkeni tanımlarız. @PathVariable ile de değişkene erişiriz.

- Eğer URL parametresine erişmek istersek @RequestParam anotasyonu kullanılır

Örnek
Elimizde şöyle bir URL olsun
/worklogs/worker/username?day=date 
Şöyle yaparız
@RestController
@RequestMapping("/worklogs")
public class WorklogController {
  
  @GetMapping("/worker/{workerUserName}")
  public List<Worklog> getReportForWorkerAndDay(
    @PathVariable("workerUserName") String workerUserName,
    @RequestParam("day") LocalDate day) {
    return reportsService.getWorklogsForWorkerAndDay(workerUserName, day);
  }
}
Örnek - @RequestMapping
URL şöyle olsun
"localhost:8080/hello/someName"
Şöyle yaparız. @RequestMapping ile süslü parentez içinde bir değişken tanımlarız.
@ResponseBody
@RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)
String hello(@PathVariable("name") String name) {
  return "hello " + name;
}
Örnek - @RequestMapping
Şöyle yaparız. @RequestMapping ile süslü parentez içinde bir değişken tanımlarız.
@RequestMapping(value = "/displaymessage/{msg}", method = RequestMethod.GET)
public String displayMessage(@PathVariable String msg, ModelMap model) {
  ...
}
@RequestParam Karşılaştırması
Bu anotasyon hep @RequestParam ile karıştırılıyor. @RequestParam kullanırken direkt URL içindeki parametrelere erişebiliriz. Şöyle yaparız.
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
            @PathVariable("userId") int user,
            @RequestParam(value = "date", required = false) Date dateOrNull) {
  ...
}

Hiç yorum yok:

Yorum Gönder