Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: API bez API
Forum PHP.pl > Forum > PHP
deha21
Tytuł nie wiele mówiący, ale dokładnie o to mi chodzi. Dostałem zapytanie o stworzenie panelu dla powiedzmy sklepu internetowego, który chce mieć zintegrowane Allegro i jeszcze jeden inny serwis. W przypadku Allegro to proste bo mają API, ale tamten drugi serwis nie ma. Czy jest jakaś możliwość żeby za pomocą czegoś (CURL?) wystawić przedmiot na tamtej stronie? Oczywiście trzeba się tam zalogować na swoje konto itp. Czy jest to w ogóle do zrobienia?
matiit
Tak jest do zrobienia.

Możesz zaprogramować wszystko co możesz zrobić ręcznie.

Przecież jak obsługujesz przeglądarkę (klikasz coś) to ona wysyła requests, odbiera responses, zapisuje cookies itd.
matiit
I jeszcze dobra rada jeśli przewidujesz więcej używać tego nie api.

Owiń sobie to w jakiś wrapper, najprosciej jak sie da, żeby można było temu wrapperowi powiedzieć co ma robić, bez detali.

np.

  1. <?php
  2.  
  3. abstract class CatalogWrapper {
  4.  
  5. abstract public function addAction(Action $action);
  6. }
  7.  
  8. class TitiesCatalogWrapper extends CatalogWrapper {
  9.  
  10. // W tej klasie logika tego co ma byc robione poprzez konkretny serwis (ten do ktorego nie ma API) wrapper
  11.  
  12. public function addAction(Action $action) {
  13.  
  14. }
  15. }
  16.  


Tak jako minimalna abstrakcja - na pewno na przyszłość będzie łatwiejsze w użyciu a i będzie łatwiej dopisać i używać inną integrację.


SmokAnalog
Ja bym zaczął od upewnienia się czy na pewno nie mają API, być może mają API niepubliczne, warto się dowiedzieć. A jeśli nie ma, to tak jak koledzy przede mną napisali - testowanie co, jak i z czym się wysyła. Na przykład zakładka Network w narzędziach developerskich Google Chrome stanie się Twoim przyjacielem.
Pyton_000
Taa, Pisanie "API" pod stronę NieApi to zgroza. O ile przy prostych serwisach nie ma problemu większego to większe serwisy często starają się jak mogą avy utrudnić takie działania (vel Play biggrin.gif )
deha21
Cytat(matiit @ 15.11.2016, 21:09:29 ) *
Przecież jak obsługujesz przeglądarkę (klikasz coś) to ona wysyła requests, odbiera responses, zapisuje cookies itd.

Tak właśnie myślałem. Wiem jak to ogarnąć Ajaxem ale chyba CURLem byłoby wygodniej? Jeśli się da bo w CURLu nie siedziałem za bardzo, nie wiem czy mogę otworzyć jakąś stronkę  wysyłając przy tym jakieś headery itp..
viking
Jak najbardziej możesz. Wszystko co w przeglądarce odbierasz / wysyłasz zrobisz też curlem. Ale powodzenia szczerze mówiąc. Załóżmy że ten serwis ma drzewo kategorii jak allegro, różne parametry dla produktów. Mordercza praca.
!*!
Ewentualnie zamiast curl użyć jakiejś "przeglądarki cli" np phantomjs. Wtedy nie jesteś zależy od zmian wprowadzanych na stronie i nie musisz się martwić jak przy logowaniu zmieni się pole formularza a pobieranie wspomnianych kategorii jest prostsze i w czasie "rzeczywistym"
Pyton_000
Ajaxem tego nie zrobisz jeśli docelowa strona nie wysyła odpowiednich nagłówków
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.