JavaWeb application

Spring Boot część 6 – Parametryzacja metod REST’owych

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 przekazywane w nagłówku należy parametr metodzie jaki chcemy pobrać poprzedzić adnotacją @RequestHeader(“header-name”). W nawiasie dostarczana jest nazwa dla 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

Tags:
Show Buttons
Hide Buttons