Nasz klient dał mi interfejs API REST, do którego muszę wykonać wywołanie PHP. Ale tak naprawdę dokumentacja podana z API jest bardzo ograniczona, więc tak naprawdę nie wiem, jak wywołać usługę.
Próbowałem go Google, ale jedyną rzeczą, która się pojawiła, był Yahoo! samouczek na temat wywoływania usługi. Nie wspominając o nagłówkach ani żadnych szczegółowych informacjach.
Czy są jakieś przyzwoite informacje na temat wywoływania interfejsu API REST lub dokumentacja na jego temat? Ponieważ nawet w W3schools opisują tylko metodę SOAP. Jakie są różne opcje tworzenia API spoczynkowego w PHP?
źródło
$data
to tablica asocjacyjna (data [ nazwa pola] = wartość), która przechowuje dane wysyłane do metody API.curl_close
funkcja nie jest wywoływana, co może powodować dodatkowe zużycie pamięci, jeśli funkcja CallAPI jest wywoływana wielokrotnie.Jeśli masz adres URL i Twój PHP go obsługuje, możesz po prostu wywołać file_get_contents:
jeśli $ odpowiedzią jest JSON, użyj json_decode, aby przekształcić ją w tablicę php:
jeśli $ response to XML, użyj klasy simple_xml:
http://sg2.php.net/manual/en/simplexml.examples-basic.php
źródło
file_get_contents
funkcja kończy się niepowodzeniem z ostrzeżeniem i zwraca wartość null. Jeśli treść zawiera komunikat o błędzie, nie można go odzyskać.Użyj pyska . Jest to „klient PHP HTTP, który ułatwia pracę z HTTP / 1.1 i eliminuje konieczność korzystania z usług internetowych”. Praca z Guzzle jest znacznie łatwiejsza niż praca z cURL.
Oto przykład ze strony internetowej:
źródło
CURL to najprostsza droga. Oto proste połączenie
źródło
Użyj HTTPFUL
Httpful to prosta, łańcuchowa, czytelna biblioteka PHP mająca na celu usprawnienie mówienia HTTP. Pozwala programistom skupić się na interakcji z interfejsami API zamiast przeszukiwania zawiniętych stron set_opt i jest idealnym klientem PHP REST.
Httpful obejmuje ...
Dawny.
Wyślij żądanie GET. Uzyskaj automatycznie przeanalizowaną odpowiedź JSON.
Biblioteka zauważa w odpowiedzi typ zawartości JSON i automatycznie analizuje odpowiedź w natywny obiekt PHP.
źródło
$condition = $response->weather[0]->main;
chyba że popełniam błąd po stronie PHPMusisz wiedzieć, czy API REST dzwonisz podpór
GET
lubPOST
lub obu tych metod. Poniższy kod jest dla mnie odpowiedni, dzwonię do własnego interfejsu API usługi sieci Web, więc już wiem, co API przyjmuje i co zwróci. Obsługuje obie metodyGET
iPOST
metody, więc mniej wrażliwe informacje trafiają doURL (GET)
, a informacje takie jak nazwa użytkownika i hasło są przesyłane jakoPOST
zmienne. Ponadto wszystko przechodzi przezHTTPS
połączenie.Wewnątrz kodu API koduję tablicę, którą chcę przywrócić do formatu json, a następnie po prostu używam polecenia PHP,
echo $my_json_variable
aby ten łańcuch json był dostępny dla klienta.Jak widać, mój interfejs API zwraca dane JSON, ale musisz wiedzieć (lub spojrzeć na zwrócone dane, aby dowiedzieć się), w jakim formacie znajduje się odpowiedź z interfejsu API.
Oto jak łączę się z API od strony klienta:
BTW, próbowałem również użyć
file_get_contents()
metody, jak sugerowali niektórzy użytkownicy tutaj, ale to nie działa dobrze dla mnie. Odkryłem, żecurl
metoda jest szybsza i bardziej niezawodna.źródło
W rzeczywistości jest wielu klientów. Jednym z nich jest szkodnik - sprawdź to. I pamiętaj, że te wywołania REST są prostym żądaniem HTTP z różnymi metodami: GET, POST, PUT i DELETE.
źródło
Możesz użyć
file_get_contents
do wydania dowolnejPOST/PUT/DELETE/OPTIONS/HEAD
metody http , opróczGET
metody, jak sugeruje nazwa funkcji.Jak publikować dane w PHP za pomocą file_get_contents?
źródło
Jeśli korzystasz z Symfony, istnieje świetny pakiet klienta odpoczynku, który zawiera nawet wszystkie wyjątki ~ 100 i zgłasza je zamiast zwracać jakiś bezsensowny kod błędu + komunikat.
Naprawdę powinieneś to sprawdzić: https://github.com/CircleOfNice/CiRestClientBundle
Uwielbiam interfejs:
Działa dla wszystkich metod http.
źródło
jak wspomniał @Christoph Winkler, jest to podstawowa klasa do osiągnięcia tego celu:
curl_helper.php
Następnie zawsze możesz dołączyć plik i użyć go np .: any.php
źródło
Jeśli jesteś otwarty na korzystanie z narzędzi stron trzecich, zapoznaj się z tym: https://github.com/CircleOfNice/DoctrineRestDriver
Jest to zupełnie nowy sposób pracy z interfejsami API.
Przede wszystkim definiujesz jednostkę, która definiuje strukturę danych przychodzących i wychodzących, i adnotujesz ją za pomocą źródeł danych:
Teraz komunikacja z interfejsem API REST jest dość łatwa:
źródło
Możesz korzystać z POSTMAN, aplikacji, która ułatwia tworzenie interfejsów API. Wypełnij pola żądania, a następnie wygeneruje kod w różnych językach. Po prostu kliknij kod po prawej stronie i wybierz preferowany język.
źródło