Temat: Petanie o web api.

Witam

Mam pytanie do osób które które wykorzystywały API strony w PHP.

Mój problem polega na tym że dostałem API strony i muszę pobrać produkty filtrować w php i wyświetlać na stronie.
Mam podane jakieś typy obiektów, identyfikatory, metody. Powiem szczerze że nie mam pojęcia to zrobić i od czego zacząć. Przejrzałem wszystkie książki co mam do php i nic nie pisze. Szukałem ale też nigdzie nie pisze jak korzystać z takiego API. Czy jest ktoś kto robił coś podobnego i wykorzystywał API w PHP.

Z góry dziękuje za każdą odpowiedz.
Kamil Mikołajczyk

Kamil Mikołajczyk programista Java /
Grails

Temat: Petanie o web api.

ale jakie API? REST? webservice wsdl?

Temat: Petanie o web api.

Dobre. A gdzie to mogę sprawdzić mam tylko przykład zastosowania:

SoapClient('https://nazwaplikuwygenerowana.svc?wsdl');

Czyli chyba wsdl.
Kamil Mikołajczyk

Kamil Mikołajczyk programista Java /
Grails

Temat: Petanie o web api.

no to poczytaj sobie o protokole SOAP, zainstaluj SOAP-UI żeby się pobawić tym api, w skrócie chodzi o to że musisz do tego API wysyłać żapytania w formie xmla zgodnego z opisem w wsdlu i dostaniesz w odpowiedzi także xmla opisanego w xmlu, a Ty sobie to musisz sparsować i wyciągnać z niego co Ci potrzebne

Temat: Petanie o web api.

Aktualnie api mam na warsztacie (zarówno tworzenie jak i spinanie innych api z systemem) więc pisz na pw w czym masz problem.

Temat: Petanie o web api.

Dzięki Panowie za odpowiedz dużo mi to pomogło ponieważ już wiem czego szukać i o czym czytać. A czy da się wogóle zrobić coś takiego że w samym php się wysyła zapytania , pobiera te dane i wyświetla na stronie?
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Petanie o web api.

sry nie doczytalem watka, do usunieciaTen post został edytowany przez Autora dnia 29.01.14 o godzinie 15:04

Temat: Petanie o web api.

Sebastian S.:
Dzięki Panowie za odpowiedz dużo mi to pomogło ponieważ już wiem czego szukać i o czym czytać. A czy da się wogóle zrobić coś takiego że w samym php się wysyła zapytania , pobiera te dane i wyświetla na stronie?

W PHP bez problemu możesz używać czy stawiać własne API. Służą do tego odpowiednie biblioteki. Najpopularniejsze to SOAP or NuSOAP. W twoim przykładzie użyta została bibliotek SOAP. Aby skorzystać z dobrodziejstw SOAP osoba chcąca udostępnić jakąś funkcjonalność (np. ja) musi w pierwszej kolejności utworzyć tzw. SoapServer (czyli krótko mówiąc abstrakcyjny serwer, którego metody będą wywoływane przez zainteresowanych klientów (np. ty) poprzez protokół SOAP - w skrócie przez internet). W bibliotece PHP SOAP tworzy się reprezentanta (instancję obiektu) SoapServer i deklaruje się w nim metody oraz tzw. słownik, opis metod najczęściej w języku WSDL (służy to do opisania jakie metody można wywoływać z jakimi parametrami). Ponieważ skąd ty masz wiedzieć jakie metody udostępnia np. serwer który ja napisałem i jakich oczekuje parametrów?? Więc abyś mógł w logiczny sposób skorzystać z dobrodziejstw mojego API udostępniam tobie opis właśnie w notacji WSDL. Możesz również spróbować na ślepo wywołać dowolną metodę na obiekcie twojego klienta np.

$Soap = SoapClient('https://nazwaplikuwygenerowana.svc?wsdl');
$result = $Soap->nieMamPojeciaJakaMaszMetode();
var_dump($result);

jeśli twórcy byli na tyle bystrzy, że zaimplementować metodę __call() w obiekcie swojego ServeraSoap zwracającą np. nazwy wszystkich metod oraz ich parametrów to do prostych operacji może wcale nie będziesz musiał zaznajamiać się z notacją WSDL ponieważ będziesz miał na talerzu podaną parametryzację.

Jeśli masz ochotę zapoznać się bardziej szczegółowo w jaki sposób uruchomić własne API przy pomocy biblioteki SOAP w PHP odsyłam do manuala.

SoapServer
http://us1.php.net/manual/pl/class.soapserver.php
SoapClient
http://us1.php.net/manual/pl/class.soapclient.php

Temat: Petanie o web api.

Witam

Dziękuję wszystkim za odpowiedzi dużo mi to pomogło i coś tam sobie dłubię w tym API. Mam jednak pytanie Mam w bazie danych produkty (około 10 000) i muszę mieć aktualne stany magazynowe i ceny i to właśnie będę pobierać z tego API zastanawiam się jak to zrobić mam dwa pomysły i nie wiem który będzie wydajniejszy:

1.Mam w bazie kolumny 'Cena','Stan' i co 10 minut wykonuje skrypt php który przelatuje w bazie wszystkie rekordy i aktualizuje ceny i stany magazynowe
2. Nie mam w bazie kolumn 'Cena','Stan' a działa to tak że jeżeli klient wybierze daną kategorię produktów wyświetlam je z bazy danych a ceny i stany magazynowe dla kazdego produktu pobieram z API.

Który sposób jest lepszy ?
Czy przy drugim nie będę się za dużo razy odwoływał do API?

Temat: Petanie o web api.

Serio zmieniasz ceny towarów co 10 minut ?
Moim zdaniem wystarczy robić to raz dziennie w nocy lub 'na żądanie'.

Temat: Petanie o web api.

Ceny może aż tak nie ale stany magazynowe mogę się zmieniać często jeżeli jest to hurtownia. no załużmy że co pół godziny bym robił pobranie cen i stanów ale skrypt i tak musi przelecieć ponad 10 000 rekordów i tyle razy odwołać się do API. Napewno lepiej byłoby mi przechowywać stany i ceny w bazie ponieważ lepiej się pracuje na bazie danych.

konto usunięte

Temat: Petanie o web api.

Sebastian S.:
... no załużmy ... Napewno

Załóżmy, na pewno nie potrzebujesz 10.000 rekordów co pół godziny a tylko tych, które zmieniły stany.

Temat: Petanie o web api.

Tak ale muszę sprawdzić których produktów się zmieniły stany i ceny. Czyli tak czy inaczej co pół godziny muszę wziąć kod produktu i za pomocą funkcji API sprawdzić jego cenę i stan i tak 10 000 razy żeby w bazie były aktualne dane.

Temat: Petanie o web api.

Jeszcze się nad tym rozwodzisz ?
Minął ponad miesiąc to można było napisać 30 razy i przetestować różne opcje ...

Temat: Petanie o web api.

No niestety jak robisz coś dla siebie ot nigdy nie ma na to czasu zawsze jest coś ważniejszego. Mam nadzieję że znajdę czas żeby to skończyć. zwraca mi już wyniki teraz tylko muszę się uporać jak się obrabia to tego xml co zwraca API. Bo muszę z tych danych wyciągnąć najniższą cenę z pewnej ilości.

konto usunięte

Temat: Petanie o web api.

Sebastian S.:
Tak ale muszę sprawdzić których produktów się zmieniły stany i ceny. Czyli tak czy inaczej co pół godziny muszę wziąć kod produktu i za pomocą funkcji API sprawdzić jego cenę i stan

Bzdura.

Rozwiązanie najprostsze: flaga aktualizacji, która ustawiana jest na "1" gdy zmieniła się cena lub stan i na "0" gdy została pobrana aktualizacja.

Pytając poprzez API o aktualizację serwer API oddaje tylko te produkty, w których flaga ustawiona jest na "1". Jeżeli od ostatniej aktualizacji nie było żadnej zmiany ceny ani stanu towaru API zwróci zero rekordów,

Inna metoda to zamiast flagi 0/1 porównać timestamp ostatniej aktualizacji produktu i timestamp ostatniego żądania aktualizacji - dzięki temu będziesz mógł aktualizować wiele sklepów - tyle w skrócie.Ten post został edytowany przez Autora dnia 30.03.14 o godzinie 10:06

Następna dyskusja:

Porównywarki cen - API




Wyślij zaproszenie do