4 Typy parametryzowania metod REST
Dostępne są cztery sposoby przekazywania danych do metody. Odbywa się to poprzez:
- Nagłówek
- Parametr
- Ścieżkę (adres)
- Ciało
Przekazywanie przez nagłówek
Przekazywanie przez nagłówek zazwyczaj tyczy się metadanych. Najczęściej są to ustawienia dotyczące kodowania, szyfrowania, wyboru języka, itp.
By pobrać dane z nagłówka, należy poprzedzić parametr metody, do którego chcemy przekazać wartość adnotacją: @RequestHeader(“header-name”), w nawiasie podając nazwę nagłówka. Przykładowa implementacja kodu znajduje się poniżej.
@RequestMapping("/getExampleRequestHeader") @ResponseBody public String requestHeaderExample(@RequestHeader("number") Long number) { return "delivered by RequestHeader: " + number; }Przekazywanie przez parametr
Przekazywanie przez parametr zazwyczaj tyczy danych związanych ze skorzystaniem z API. Przykładowo dla API udostępniającego liczbę mieszkańców w Polsce parametrem może być miasto na temat, którego liczbę mieszkańców chcemy otrzymać.
Adnotacja kluczową w tym przypadku jest @RequestParam(„param-name”). W nawiasie dostarczana jest nazwa paramteru. Przykładowa implementacja kodu znajduje się poniżej.
@RequestMapping("/getRequestParam") @ResponseBody public String requestParamExample(@RequestParam("number") Long number) { return "delivered by RequestParam: " + number; }Przekazywanie przez adres
Przekazywanie z wykorzystaniem adresu jest typowe dla API zawierających paginacje. Przykładowo, kiedy API zawraca wiele stron wynikowych.
Adnotacja wykorzystywaną przy obieraniu danych z adresu to @PathVariable(„path-label”). W nawiasie przekazywany jest element URL z który ma zostać przekazany do metody. Poniżej przykład implementacji.
@RequestMapping("/getExamplePathVariable/{number}") @ResponseBody public String pathVariableExample(@PathVariable("number") Long number) { return "delivered by PathVariable: " + number; }Przekazywanie przez ciało
Przekazywane przez ciało są zazwyczaj złożone obiekty np. listy, kolekcje itp. Przekazanie ich przez inne typy przekazywania wartości było by problematyczne.
@RequestBody to adnotacja jaka poprzedza parametr w metodzie, by odczyt przekazywanej wartości był możliwy.@RequestMapping(value = "/getRequestBody", method = RequestMethod.POST) @ResponseBody public String requestBodyExample(@RequestBody Long number) { return "delivered by RequestBody: " + number; }Podsumowanie
Nic nie stoi na przeszkodzie, aby swoje API sporządzić w taki sposób, aby przekazywane dane na różne sposoby.
W kolejnej części opisany zostanie sposób przekazywania parametrów niejawnych do metod REST.
Cały kurs opisujący mechanikę i działanie Spring Boot od podstaw znajdziesz tutaj: Kurs Spring Boot