Tutorial Amazon Web Services mit PHP – V – Komplettes Beispiel Buchsuche
15. Mai 2009
Wie im letzten Teil bereits angekündigt, erstellen wir im letzten Teil des Tutorials ein komplett funktionsfähiges Beispiel, um ein Buch mittels ISBN auf einer eigenen Seite darzustellen. Aufgrund der ganzen Beispiele und Erklärungen ist dies nun keine Zauberei mehr, und ziemlich einfach zu bewerkstelligen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | // Die notwendigen Klassen includen require_once("./smarty/Smarty.class.php"); require_once('Cache/Lite/Function.php'); // Konstanten deklarieren define('APIKEY','...'); define('PARTNERID','...'); // XML eines Buches mit cURL von den AWS laden function aws_load_book( $isbn ) { $ch = curl_init(); // Die URL des AWS-Aufrufes zusammenstellen $url = "http://webservices.amazon.de/onca/xml?Service=AWSECommerceService"; $url .= "&AWSAccessKeyId=".APIKEY; $url .= "&AssociateTag=".PARTNERID; $url .= "&Operation=ItemLookup"; $url .= "&ItemId=".$isbn; $url .= "&ResponseGroup=Large"; // curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_HEADER, 0 ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); $result = curl_exec( $ch ); curl_close( $ch ); return $result; } // Funktionscache konfigurieren $options = array( 'cacheDir' => '/tmp/', 'lifeTime' => 10 ); $cache = new Cache_Lite_Function($options); // Gecachter Aufruf des XML-Aufrufs; $xml = $cache->call('aws_load_book', $_GET['isbn'] ); $xmlobject = simplexml_load_string( $xml ); // Smarty konfigurieren $smarty = new Smarty(); $smarty->template_dir = './'; $smarty->compile_dir = '/tmp/'; $smarty->assign( 'book_title', $xmlobject->Items->Item->ItemAttributes->Title ); $smarty->assign( 'book_description', $xmlobject->Items->Item->EditorialReviews->EditorialReview->Content ); $smarty->assign( 'book_order_link', $xmlobject->Items->Item->DetailPageURL ); $smarty->display('book.tpl'); |
Natürlich fehlt jetzt noch das Passende Template:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Amazon Buchsuche</title> </head> <body> <h1>{$book_title}</h1> <p>{$book_description}</p> <p><a href="{$book_order_link}">Das Buch bei Amazon bestellen.</a></p> </body> </html> |
Dies funktioniert so weit, allerdings merkt man schon, dass es schier unmöglich und sehr zeitaufwendig ist, alle Funktionen der AWS zu überblicken, bzw. das resultierende XML fachgerecht zu interpretieren. Aus diesem Grund gibt es einige fertige Frameworks, die einen bei der Arbeit unterstützen. Eins davon werde ich in einem der nächsten Blogposts vorstellen.

10 nützliche PHP Snippets
Swagger - API Dokumentationen und Sandbox
CSS Crush - noch ein CSS Preprocessor aus Deutschland
SiteVault – Komplettbackup für Webhosts inklusive SQL
USBWebserver – der Webserver für unterwegs



27. April 2011 um 12:52 Uhr
Danke, ich habe gerade erfahren, dass meine PartnerID als AssociateTag neben dem AWSAccessKeyId im URL platziet wird. Viel Spaß noch mit PHP, ich probiers gerade mit C#.