402 Stimmen

Aufrufen einer REST-API in PHP

Unser Kunde hatte mir eine REST-API zur Verfügung gestellt, für die ich einen PHP-Aufruf machen muss. Aber die mit der API gelieferte Dokumentation ist sehr begrenzt, so dass ich nicht wirklich weiß, wie ich den Dienst aufrufen soll.

Ich habe versucht, es zu googeln, aber das Einzige, was dabei herauskam, war eine bereits abgelaufene Anleitung von Yahoo! zum Aufruf des Dienstes. Keine Erwähnung der Kopfzeilen oder irgendetwas tiefer gehende Informationen.

Gibt es vernünftige Informationen darüber, wie man eine REST-API aufruft oder eine Dokumentation darüber? Denn auch in W3schools, beschreiben sie nur die SOAP-Methode. Was sind verschiedene Optionen für den Rest der API in PHP zu machen?

538voto

Christoph Winkler Punkte 6118

Sie können auf jede REST-API mit PHPs cURL Erweiterung. Die API-Dokumentation (Methoden, Parameter usw.) muss jedoch von Ihrem Kunden bereitgestellt werden!

Beispiel:

// Method: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value

function CallAPI($method, $url, $data = false)
{
    $curl = curl_init();

    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);

            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // Optional Authentication:
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, "username:password");

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($curl);

    curl_close($curl);

    return $result;
}

240voto

Andreas Wong Punkte 57642

Wenn Sie eine Url haben und Ihr PHP dies unterstützt, können Sie einfach file_get_contents aufrufen:

$response = file_get_contents('http://example.com/path/to/api/call?param1=5');

Wenn $response JSON ist, verwenden Sie json_decode, um es in ein php-Array umzuwandeln:

$response = json_decode($response);

wenn $Response XML ist, die Klasse simple_xml verwenden:

$response = new SimpleXMLElement($response);

http://sg2.php.net/manual/en/simplexml.examples-basic.php

193voto

colan Punkte 2668

Verwenden Sie Guzzle . Es ist ein "PHP-HTTP-Client, der die Arbeit mit HTTP/1.1 erleichtert und die Nutzung von Webservices vereinfacht". Die Arbeit mit Guzzle ist viel einfacher als die Arbeit mit cURL.

Hier ist ein Beispiel von der Website:

$client = new GuzzleHttp\Client();
$res = $client->get('https://api.github.com/user', [
    'auth' =>  ['user', 'pass']
]);
echo $res->getStatusCode();           // 200
echo $res->getHeader('content-type'); // 'application/json; charset=utf8'
echo $res->getBody();                 // {"type":"User"...'
var_export($res->json());             // Outputs the JSON decoded data

44voto

Xhuljo Punkte 511

Verwendung von Postbote können Sie Codes zum Aufrufen der API für die meisten Sprachen erzeugen, einschließlich PHP . Hier sind die Schritte:

Schritt 1

Verwenden Sie Postman UI, um Ihre API-Aufrufe zu spezifizieren, d.h., URL , method , headers , parameters , body und so weiter.

enter image description here

Schritt 2

Auf der rechten Seite befindet sich eine kleine Schaltfläche, mit der Sie den generierten Code sehen können.

enter image description here

Schritt 3

Wählen Sie Ihre bevorzugte Sprache (und Bibliothek) aus dem Dropdown-Menü und los geht's!

enter image description here

31voto

Broncha Punkte 3744

CURL ist der einfachste Weg. Hier ist ein einfacher Aufruf

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "THE URL TO THE SERVICE");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, POST DATA);
$result = curl_exec($ch);

print_r($result);
curl_close($ch);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X