Rest API używany w projekcie
Rest API jest często używany w aplikacjach mobilnych, serwisach społecznościowych, narzędziach mashup i zautomatyzowanych procesach biznesowych. Styl REST podkreśla, że interakcje między klientami i usługami są wzmocnione przez posiadanie ograniczonej liczby operacji. Korzystając z tego linku, które są wymienione poniżej, próbujemy pobrać dane json.
Screen 1- Notice-Module: Kiedy otworzysz aplikację, otrzymasz wynik listy powiadomień zawierający notice-title, notice-brief, notice-filesource, który jest pobierany za pomocą Alamofire przy użyciu tego notice-api.
Notice-Module-API: https://api.myjson.com/bins/1bsqcn/
Screen 2- Movie-Module: Jeśli klikniesz dowolny element z listy tabeli, zostaniesz przeniesiony do innego kontrolera widoku filmu, który zawiera obraz, tytuł i brief, który jest pobierany za pomocą Alamofire przy użyciu tego movie-api.
Movie-Module-API: https://api.myjson.com/bins/1h87n6
Podfile:
W podfile zawarliśmy Alamofire do wywoływania rest apis, AlamofireImage do ładowania obrazów w tableView i AlamofireObjectMapper do mapowania modelu lub encji.
AppConstants.swift
NoticeModel.swift
Warstwa Entity dostarcza model, którego interactor używa do tworzenia obiektów z pobranych danych. Entity jest prawdopodobnie najprostszym elementem wewnątrz struktury VIPER. Ważną rzeczą, którą należy zauważyć jest to, że Entity różni się od Data Access Layer, która powinna być obsługiwana przez Interactor. Tutaj używamy mappera obiektowego do mapowania obiektu JSON odpowiedzi i obiektu MODEL.
NoticeProtocol.swift
Używamy protokołów do definiowania metod, które komponent modułu może wywoływać z innych komponentów tego samego modułu. W uproszczeniu możemy powiedzieć, że protokoły są używane do komunikacji pomiędzy różnymi warstwami .
NoticePresenter.swift
NoticeInteractor.swift
Interactor jest główną integralną sekcją, w której rezyduje całe logowanie biznesowe. Tworzymy instancję InteractorToPresenterProtocol, aby wysłać odpowiedź o sukcesie lub błędzie, która przyszła przez API do Presentera.
NoticeViewController.swift
NoticeViewController pokazuje tylko dane w tableView, które przyszły przez odpowiedź API. Tutaj implementujemy PresenterToViewProtocol jako rozszerzenie, aby otrzymywać dane przychodzące przez prezenter. I tworzymy instancję presenter:ViewToPresenterProtocol dla sieciowych wywołań API.
NoticeRouter.Swift
Warstwa routera jest odpowiedzialna za tworzenie struktury aplikacji, jak np. przechodzenie pomiędzy różnymi ekranami. W tym projekcie routing dzieje się podczas pierwszego uruchomienia aplikacji. Tak więc wewnątrz AppDelegate’a 'didFinishLaunchingWithOptions wywoływana jest funkcja createModule() routera, która zwraca moduł. Klasa UIWindow następnie pokazuje widok tego modułu.
AppDelegate.swift
W AppDelegate, po prostu tworzymy instancję UINavigationViewController poprzez przekazanie instancji NoticeViewController i ustawiamy ten kontroler UINavigationView jako główny kontroler widoku.
Proszę sklonować lub pobrać cały projekt z GITHUB. I na koniec, gratulacje, nauczyłeś się podstaw VIPERa. Szczęśliwego kodowania. Jeśli uważasz, że ten artykuł jest pomocny nie zapomnij podzielić się nim, polecić i klaskać.