Hoe de uitvoering van de REST-technologie
Er zijn twee kanten aan dit verhaal, de eerste is hoe de legitieme REST verzoeken genereren, en de tweede is hoe de antwoorden correct behandelen. Genereren VerzoekenAls het gaat om het genereren van de aanvraag, hebt u drie opties. Ten eerste kunt u het genereren van de aanvraag handmatig, met behulp van header PHP functies. Dit geeft u volledige flexibiliteit bij het genereren van het verzoek, maar heeft betrekking op de meest codering. Ten tweede kunt u een van PHP's built-in verzoek functies zoals file_get_contents () of file () / fopen (), fread (), en fclose (). Met deze methode wordt veel van de gedetailleerde informatie automatisch verwerkt door PHP, en u ontvangt hetzelfde antwoord. Tot slot kunt u gebruik maken van een aangepaste klasse ontworpen om te worden gebruikt met de API in kwestie. Het algemeen vereisen deze klassen niet meer dan de parameter-lijst, en zal de terugkeer van de resultaten in de vorm van een aangepaste object of toegankelijk maken door middel van een klasse. Handleiding GenerationHet genereren van aanvragen handmatig is alleen lastig de eerste keer, na die, code-hergebruik en modulariteit kick inch Conceptueel de functie die zal genereren verzoek pretty basic is. Ten eerste zijn alle parameters die het verzoek bereid te zorgen voor goede overdracht. Vervolgens de URL voor het eindpunt wordt gegenereerd, dan ontleed en opgedeeld in zijn samenstellende delen. Ten slotte is het verzoek zelf verzonden via stopcontacten: functioncallAPI ($ eindpunt, $ devkey, $ action, $ type, $ trefwoord) Drie van de meegegeven parameters zijn URL-gecodeerd. Dit is nodig om ervoor zorgen dat zij goed worden doorgegeven over de URL. In het vorige voorbeeld, was een zoektocht naar 'stijl' uitgevoerd, als het zoeken had in plaats daarvan is "stijl boek" de ruimte zou hebben geëist codering, wat resulteert in stijl 20book%. Ik heb verwaarloosd devkey codering van de variabelen, vertrouwend dat de uitvaardigende autoriteit heeft hoe het zou worden gebruikt in overweging bij het maken van hen. $ url = $ eindpunt. "? devkey = $ devkey & action = $ action & type = $ type & zoekwoord = $ trefwoord"; Hier de URL zelf wordt gegenereerd, inclusief de nu URL-gecodeerde parameters. De URL moet worden gedeconstrueerd tot zijn samenstellende delen voor gebruik in de ruwe socket verbinding. $ fp = fsockopen ($ host, 80); Hier is de informatie gegenereerd door de vorige code is eindelijk verstuurd. De eerste fputs () lijn stuurt het pad naar het gevraagde document, en de tweede regel geeft de gewenste host. $ response = ""; Ten slotte is de reactie wordt opgehaald en de inhoud van de reactie wordt geretourneerd. U leert hoe u de antwoorden verwerken in de secties omgaan met die kant van de dingen te zien zijn. Snel GenerationGebruik makend van PHP's built-in het dossier van functies, kan hetzelfde proces worden aangevuld met veel minder code (hoewel u hoeft minder flexibiliteit). Conceptueel deze functie werkt hetzelfde als de vorige, met uitzondering van alle oproepen bestand socket worden vervangen met een oproep aan file_get_contents (): functioncallAPIQuick ($ eindpunt, $ devkey, $ action, $ type, $ trefwoord) Er is echt niet veel uit te leggen met dit voorbeeld. De URL-codering is eerder besproken, en de interne file_get_contents () aanroep behandelt alle magie. Het teken voor de functie-aanroep wordt gebruikt voor het onderdrukken eventuele waarschuwingen die kunnen voortvloeien uit een niet-bestaand bestand of een URL, omdat deze moeten worden behandeld door de aanroepende functie (file_get_contents () return false zal in deze gevallen). In pre-PHP5 omgevingen moet je gebruiken fopen () in plaats van file_get_contents (). Enige flexibiliteit verloren gaat met dit soort vragen, omdat je niet meer kunt aangepaste headers of optionele headers, die kunnen worden geëist of zeer wenselijk, afhankelijk van de API waarmee u interacterende ingesteld. Geautomatiseerde hulpmiddelenAangezien de populariteit van web services toeneemt, zo zal de prevalentie van voorgecompileerde klassen te behandelen het vuile werk van de daadwerkelijk interactie met de server. Als de service die u wilt communiceren met een klas beschikbaar heeft, is het zeker waard. Toegang tot de klasse zal uiteraard afhankelijk van de klasse zelf. Het moet komen met voldoende documentatie, en de toegang zal waarschijnlijk niet te veel afwijken van de eerdere voorbeelden - maar met een beetje meer fouten te controleren (hoop je). Iets om in gedachten te houden is dat veel voorgecompileerde modules worden ontwikkeld en onderhouden door derde partijen, en als zodanig u zou kunnen hebben om een tijdje na nieuwe functies worden vrijgegeven op de API voor hen beschikbaar wachten om met uw klas. Omgaan met de ResponseHoe je omgaat met het antwoord hangt af van de methode van het versturen van de aanvraag die u kiest. Als u gegenereerde verzoek handmatig of met behulp van een van PHP's built-in functies (zoals file_get_contents ()) u ook handmatig moeten omgaan met de respons. Als je een derde partij-module gebruikt, zal het zijn eigen interface voor het ophalen van de resultaten. Handmatig Parsing de ResponseDe reactie die door de server moet een XML-document; gelukkig, XML is ontworpen om gemakkelijk te ontleden. Helaas, geen kwestie hoe het werd ontworpen, handmatig te ontleden iets meestal niet veel plezier. PHP5 geleverd met SimpleXML, waardoor de behandeling XML-documenten een briesje. PHP4 gebruikers hebben geen SimpleXML, maar een paar modules van derden zoals MiniXML beschikbaar zijn die soortgelijke functies vervullen. Zodra u het antwoord hebt ontvangen, steken het in een SimpleXML object moet een briesje. Met behulp van de vorige bibliotheek voorbeeld en functie in, krijg je met iets als dit: $ response = callAPIQuick ( 'http://library.example.com/api.php', '123 ',' zoeken ', Hier is het antwoord niet vals (en dus iets, vermoedelijk het XML-je was gehoopt, werd teruggestuurd). Merk op dat deze aanname in het algemeen is vrij geldig. Wanneer een server die een API een fout tegenkomt, moet zij de fout in een mooie XML-formaat. De simplexml_load_string () functie neemt de respons en maakt er een XML-object dat direct kunnen worden benaderd, herhaald door, en zo verder. Ten slotte heeft de print_r () functie resulteert in een gebruiksvriendelijke uitgang waaruit de inhoud van het object, hier afgebeeld: SimpleXMLElement Object ) [1] => SimpleXMLElement Object Kijkend naar dat productie, een paar dingen onmiddellijk moet duidelijk zijn:
Rekening houdend met al die informatie in het achterhoofd, een paar snelle regels code zijn die nodig is om de inhoud beter te verkennen. echo "U hebt gezocht naar: ($ xml-> Request-> Parameters-> Argument [3] -> value)" echo "Hier zijn uw ($ xml-> Response-> ResultCount) resultaten " foreach ($ xml-> Response-> Item AS & $ item) ( echo "($ item-> title) door ($ item-> Auteur) " ) Hier de zoekopdracht en resultaat tellen wordt gepresenteerd, en vervolgens de resultaten zelf zijn herhaald door. De syntax krijgt een beetje raar bij het omgaan met arrays (zoals blijkt wanneer de zoekopdracht wordt afgedrukt), dus is het vaak verstandig is te herhalen door hen voor de duidelijkheid. REST is een effectieve methode van bevragen van externe API's is het toegestaan voor het verzoek gedeelte van uw transactie plaats te vinden in de heldere. Creëren REST vragen is net zo makkelijk als URL-codering van de vereiste parameters en het opgeven van een eindpunt voor de oproep. Omgaan met REST antwoorden kan een beetje lastiger worden, maar door gebruik te maken van tools als SimpleXML, het te snel kan worden afgerond. een artikel afkomstig van Emanuela Hedrick
|
|||||
|