Retrofit - adnotacje

Kliknij i wspomóż mnie :)

Android

Wstęp

Ten materiał jest częścią kursu Retrofit2 w Android na platformie Udemy. W kursie przeprowadzam Cię od podstaw teorii architektury REST przez konsumowanie danych, aż po projekt własnego API.

Kilka darmowych odcinków można znaleźć tutaj:

Kurs Retrofit2

Co to jest Retrofit i do czego służy?

Krótko mówiąc Retrofit to biblioteka do obsługi zapytań HTTP w środowisku aplikacji.

Więcej o nim oraz interceptorach pisałem w poprzednim artykule. Do sprawdzenia tutaj:

Retrofit - interceptory

Co to jest adnotacja?

Adnotacja to dodatkowa informacja o kodzie. W Javie i Kotlinie zaznaczana za pomocą @ np. @Target. Najczęściej jest to informacja dla kompilatora lub biblioteki, aby w określony sposób zaznaczony kod potraktować.

Skrupulatnie ten temat opisał Samouczek Programisty i zachęcam do pogłębienia tematu 🤓

Adnotacje w języku Java

Jakie są adnotacje w Retroficie?

Od określania typu zapytania po uzupełnianie parametrów. Większość czynności wykonujemy za pomocą adnotacji.

  • Rodzaj metody HTTP np. @GET
  • Manipulacja URL np. @Path
  • Dodawanie parametrów np. @Query
  • Manipulacja nagłówkiem @Header
  • Przesył treści @Multipart

Adnotacje metody HTTP

Jednymi z pierwszych adnotacji jakich użyjemy są te określające metody HTTP. Należą do nich m.in. @GET, @POST, @DELETE.

Sprawdźmy jak wygląda taka adnotacja w kodzie:

Jak widać jest to bardzo prosty interfejs przyjmujący lub nie parametr określający endpoint.

W przypadku braku argumentu zostanie użyty URL podany w konstruktorze Retrofita. Często nazywany BASE_URL.

Po stronie klienta wykorzystanie wygląda tak:

Analogicznie korzysta się z pozostałych adnotacji do metod HTTP.

Parametryzowanie zapytania HTTP

Zaskoczony byłem jak łatwo w metodzie można manipulować adresem URL za pomocą adnotacji @Path i @Field.

Kiedy chcemy wywołać zapytanie o dane konkretnego użytkownika to musimy przekazać jego ID, a do tego służy @Path. Jest to bajecznie proste 🤗

Po wykonaniu z poziomu aplikacji URL będzie wyglądać tak:

Okej, ale taką podmianę szybko mógłbym samemu zrealizować w kodzie to po co cała biblioteka?

Spójrzmy jak wygląda metoda do aktualizowania użytkownika.

Tutaj już są 3 argumenty w tym dwa z adnotacją @FormUrlEncoded, która zakoduje nasz dane w standardzie UTF-8 i doda x-www-form-urlencoded do nagłówka.

Zapytanie po sformatowaniu może wyglądać tak:

Formatowanie nagłówka HTTP

Jeżeli kogoś wciąż nie przekonało, że Retrofit skutecznie przyspiesza programowanie to spójrzmy na dostosowywanie nagłówka za pomocą @Headers.

Jako parametr podajemy tablicę Stringów z nazwą parametru i wartością po :.

Jest to standardowa konfiguracja z określeniem akceptowanego typu danych oraz czasem cache'a.

Prawda, że jest to super łatwe? 😀

Bonus

Dla zainteresowanych ideą interceptorów z poprzedniego wpisu pokazuję trik, dzięki któremu nagłówek można dodać do każdego zapytania.

Poniższy kod pochodzi od użytkownika EpicPandaForce ze StackOverflow. Dzięki 🙌

Pełna odpowiedź z wersją w Kotlinie znajduje się tutaj:

Odpowiedź EpicPandaForce

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.