Android
2020-02-07
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
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
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
Od określania typu zapytania po uzupełnianie parametrów. Większość czynności wykonujemy za pomocą adnotacji.
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.
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:
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? 😀
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 😊
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ć.
Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.