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?

3voto

Tobias Punkte 956

Wenn Sie Symfony verwenden, gibt es ein großartiges Rest-Client-Bündel, das sogar alle ~100 Ausnahmen enthält und sie auslöst, anstatt einen bedeutungslosen Fehlercode + Nachricht zurückzugeben.

Sie sollten es wirklich überprüfen: https://github.com/CircleOfNice/CiRestClientBundle

Ich liebe die Schnittstelle:

try {
    $restClient = new RestClient();
    $response   = $restClient->get('http://www.someUrl.com');
    $statusCode = $response->getStatusCode();
    $content    = $response->getContent();
} catch(OperationTimedOutException $e) {
    // do something
}

Funktioniert für alle http-Methoden.

0voto

Tobias Punkte 956

Wenn Sie bereit sind, Tools von Drittanbietern zu verwenden, sollten Sie sich dieses ansehen: https://github.com/CircleOfNice/DoctrineRestDriver

Dies ist eine völlig neue Art, mit APIs zu arbeiten.

Zunächst definieren Sie eine Entität, die die Struktur der eingehenden und ausgehenden Daten festlegt, und versehen sie mit Datenquellen:

/*
 * @Entity
 * @DataSource\Select("http://www.myApi.com/products/{id}")
 * @DataSource\Insert("http://www.myApi.com/products")
 * @DataSource\Select("http://www.myApi.com/products/update/{id}")
 * @DataSource\Fetch("http://www.myApi.com/products")
 * @DataSource\Delete("http://www.myApi.com/products/delete/{id}")
 */
class Product {
    private $name;

    public function setName($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

Jetzt ist es ziemlich einfach, mit der REST-API zu kommunizieren:

$product = new Product();
$product->setName('test');
// sends an API request POST http://www.myApi.com/products ...
$em->persist($product);
$em->flush();

$product->setName('newName');
// sends an API request UPDATE http://www.myApi.com/products/update/1 ...
$em->flush();

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