Napisany przez: pieknymacius 24.04.2018, 09:51:31
Cześć! Pracuję właśnie nad integracją mojej aplikacji z zewnętrznym serwisem (REST API). Serwis udostępnia szereg endpointów, część z nich przyjmuje duże struktury danych. Chciałem zapytać bardziej doświadczonych kolegów, jak dobrze zaprojektować takie połączenie. Chciałbym uniknąć sytuacji, gdzie za każdym razem robię coś takiego:
$client = new GuzzleHttp\Client();
// pobranie danych z bazy
$data = [
// tutaj tworzenie struktury z pobranych danych
]
$res = $client->request('POST', 'https://api.foo/bar', [
'json' => $request
]);
// wyciągnięcie danych z odpowiedzi
Zdaję sobie sprawę, że trzeba rozbić to na klasy. Niestety nie wiem, jak zrobić to dobrze. Myślałem, żeby utworzyć klasy dla każdego typu requesta i responsa oraz klasę klienta, która by je wykorzystywała. Jak Wy to zazwyczaj robicie? Czy macie jakieś dobre przykłady podobnych implementacji?
Napisany przez: LowiczakPL 24.04.2018, 22:02:38
Cytat
Zdaję sobie sprawę, że trzeba rozbić to na klasy. Niestety nie wiem, jak zrobić to dobrze. Myślałem, żeby utworzyć klasy dla każdego typu requesta i responsa oraz klasę klienta, która by je wykorzystywała. Jak Wy to zazwyczaj robicie? Czy macie jakieś dobre przykłady podobnych implementacji?
Raczej jedna klasa kontrolera zawierająca wiele metod korzystających z managera zajmującego się obsługą danych.
W sumie zależy też jak bardzo rozbudowane jest to API ile udostępnia połączeń, to wtedy można podzielić to na kilka klas pogrupowanych tak jak API, najlepiej 1:1
Napisany przez: pieknymacius 25.04.2018, 08:42:25
Cytat(LowiczakPL @ 24.04.2018, 23:02:38 )
Raczej jedna klasa kontrolera zawierająca wiele metod korzystających z managera zajmującego się obsługą danych.
W sumie zależy też jak bardzo rozbudowane jest to API ile udostępnia połączeń, to wtedy można podzielić to na kilka klas pogrupowanych tak jak API, najlepiej 1:1
Czy mógłbyś rozwinąć? Manager miałbym wyciągać dane z bazy i przygotowywać odpowiednie struktury w zależności od rodzaju requesta? Myślę, że API jest całkiem rozbudowane - stąd moje pytanie.