<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=PHP_Consumindo_un_servizo_de_Laravel</id>
	<title>PHP Consumindo un servizo de Laravel - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=PHP_Consumindo_un_servizo_de_Laravel"/>
	<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=PHP_Consumindo_un_servizo_de_Laravel&amp;action=history"/>
	<updated>2026-10-17T07:39:16Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=PHP_Consumindo_un_servizo_de_Laravel&amp;diff=22283&amp;oldid=prev</id>
		<title>Angelfg: Página creada con «=Introducción=  * Na UD6 vimos como desenvolver un servizo Web.  : O que imos facer nesta unidade é crear un novo proxecto Web e imos facer uso do servizo web creado na U…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=PHP_Consumindo_un_servizo_de_Laravel&amp;diff=22283&amp;oldid=prev"/>
		<updated>2024-02-29T16:35:50Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «=Introducción=  * Na UD6 vimos como desenvolver un servizo Web.  : O que imos facer nesta unidade é crear un novo proxecto Web e imos facer uso do servizo web creado na U…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducción=&lt;br /&gt;
&lt;br /&gt;
* Na UD6 vimos como desenvolver un servizo Web. &lt;br /&gt;
: O que imos facer nesta unidade é crear un novo proxecto Web e imos facer uso do servizo web creado na UD6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Para iso, abrides &lt;br /&gt;
&lt;br /&gt;
== Usar un servizo externo ==&lt;br /&gt;
&lt;br /&gt;
* [http://guzzle.readthedocs.io/en/latest/ Gruzzle].&lt;br /&gt;
: * Comando para instalación: &amp;#039;&amp;#039;&amp;#039;composer require guzzlehttp/guzzle&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exemplo de código ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Neste código imos amosar como facer unha chamada a unha API Externa.&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;2,9-13&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
........&lt;br /&gt;
use \GuzzleHttp\Client;&lt;br /&gt;
&lt;br /&gt;
class ApiExternaController extends Controller&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    public function index()&lt;br /&gt;
    {&lt;br /&gt;
        $client = new \GuzzleHttp\Client();&lt;br /&gt;
        $res = $client-&amp;gt;get(&amp;#039;https://XXXX.XXXXX.XX/api/XXXXXXXX/XXXXXX/json?key=XXXXXXXXXXXXXX&amp;amp;query=parametro&amp;amp;language=es&amp;#039;);&lt;br /&gt;
        echo $res-&amp;gt;getStatusCode(); // 200&lt;br /&gt;
        $datos = json_decode($res-&amp;gt;getBody(),true);&lt;br /&gt;
        var_dump($datos);&lt;br /&gt;
    }&lt;br /&gt;
    ..................&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Liña 3: Temos que facer uso da clase Client de GuzzleHttp.&lt;br /&gt;
* Liña 10: Facemos a petición a API Externa. Fixarse que normalmente teredes que enviar algún tipo de autenticación. Neste caso enviamos unha API Key xa que o servizo pertence a Google. &lt;br /&gt;
:: Dita API espera recibir na URL o formato de saída (xml ou json), e tamén pode levar parámetros como uha cadea de busca ou a linguaxe do resultado.&lt;br /&gt;
* Liña 11: Podemos obter o código de erro devolto pola API (200 é correcto como xa vimos anteriormente).&lt;br /&gt;
* Liña 12: Utilizamos a [http://php.net/manual/es/function.json-decode.php función json_decode] có parámetro a true para que devolva os datos como un array asociativo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* O var_dump dará como resultado:&lt;br /&gt;
::&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;6&amp;quot; &amp;gt;&lt;br /&gt;
array (size=4)&lt;br /&gt;
  &amp;#039;html_attributions&amp;#039; =&amp;gt; &lt;br /&gt;
    array (size=0)&lt;br /&gt;
      empty&lt;br /&gt;
  &amp;#039;next_page_token&amp;#039; =&amp;gt; string &amp;#039;CvQB5QAAAB-Q718qEtEfzZnccxK0THwIjfCrwGbkVsvEoQaiGyMWBj6Z3-DW1_9UWJaKANfpAahtoMP7AEjcb1JzLzRvJa9gBIueMXhxGzSPhHwKXxiI6Gp2NVQUHRcr0wW2VgAmVHKCGYid01wI8C_r0SaD3iHIB-0Fr5h2IRy4DsmjN6L9oJMaOQTBtAgCN7sCH6imRmMd2lq5XZW9pWHA3JeOAJt4HhKb34X8fjNNKgiIvOi0XPPcRPoIYJ-NcphGShTgA_Fhnl02vyqnn8mbzGMA9xU4yBObOx-cfd5qMKHYLdb5p0L6ctNa_SIV5YM_YUSFwRIQthy2TYyPTmUNwbBfFDMP5xoUPNoKN8AtwpDHFVgOb44DjIBGffU&amp;#039; (length=383)&lt;br /&gt;
  &amp;#039;results&amp;#039; =&amp;gt; &lt;br /&gt;
    array (size=20)&lt;br /&gt;
      0 =&amp;gt; &lt;br /&gt;
        array (size=10)&lt;br /&gt;
          &amp;#039;formatted_address&amp;#039; =&amp;gt; string &amp;#039;RÃºa MarÃ­a, 2, 15402 Ferrol, A CoruÃ±a, EspaÃ±a&amp;#039; (length=48)&lt;br /&gt;
          &amp;#039;geometry&amp;#039; =&amp;gt; &lt;br /&gt;
            array (size=2)&lt;br /&gt;
              ...&lt;br /&gt;
          &amp;#039;icon&amp;#039; =&amp;gt; string &amp;#039;https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png&amp;#039; (length=67)&lt;br /&gt;
          &amp;#039;id&amp;#039; =&amp;gt; string &amp;#039;7c7088e7c654ba30efa1e384e0881bebee8cf065&amp;#039; (length=40)&lt;br /&gt;
          &amp;#039;name&amp;#039; =&amp;gt; string &amp;#039;Asador Gavia&amp;#039; (length=12)&lt;br /&gt;
          &amp;#039;photos&amp;#039; =&amp;gt; &lt;br /&gt;
            array (size=1)&lt;br /&gt;
              ...&lt;br /&gt;
          &amp;#039;place_id&amp;#039; =&amp;gt; string &amp;#039;ChIJ22OacwV2Lg0RLObpSmq3D6k&amp;#039; (length=27)&lt;br /&gt;
          &amp;#039;rating&amp;#039; =&amp;gt; float 4.2&lt;br /&gt;
          &amp;#039;reference&amp;#039; =&amp;gt; string &amp;#039;CmRSAAAAG-LM_2yc9TTbC8l4HoczU2OPnFPs6eYHzoLwJBwGeSiFT9XvalSDcOb0bLZXHDxp3tSAswl57eXpcZGvAIDiYfckbnl7eIxhLl722qHdn4qv-py6_umtqt2pvzoWGC3EEhA8MgKa1gD9lEzOD_EGSqlgGhT8YjPOdYP3d9C9oB9IdHEr92yvEQ&amp;#039; (length=190)&lt;br /&gt;
          &amp;#039;types&amp;#039; =&amp;gt; &lt;br /&gt;
            array (size=4)&lt;br /&gt;
              ...&lt;br /&gt;
      1 =&amp;gt; &lt;br /&gt;
        array (size=10)&lt;br /&gt;
          &amp;#039;formatted_address&amp;#039; =&amp;gt; string &amp;#039;Lugar Bosque, 73 - Bajo, 15405 Ferrol, A CoruÃ±a, EspaÃ±a&amp;#039; (length=57)&lt;br /&gt;
          &amp;#039;geometry&amp;#039; =&amp;gt; &lt;br /&gt;
            array (size=2)&lt;br /&gt;
              ...&lt;br /&gt;
          &amp;#039;icon&amp;#039; =&amp;gt; string &amp;#039;https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png&amp;#039; (length=67)&lt;br /&gt;
          &amp;#039;id&amp;#039; =&amp;gt; string &amp;#039;d0d3a7fb96efe558e00268ba18bf7c9f7e003d67&amp;#039; (length=40)&lt;br /&gt;
          &amp;#039;name&amp;#039; =&amp;gt; string &amp;#039;Medulio&amp;#039; (length=7)&lt;br /&gt;
          &amp;#039;photos&amp;#039; =&amp;gt; &lt;br /&gt;
            array (size=1)&lt;br /&gt;
              ...&lt;br /&gt;
          &amp;#039;place_id&amp;#039; =&amp;gt; string &amp;#039;ChIJI7bO3KPYLQ0R5CVGKcTigTg&amp;#039; (length=27)&lt;br /&gt;
          &amp;#039;rating&amp;#039; =&amp;gt; float 4.2&lt;br /&gt;
          &amp;#039;reference&amp;#039; =&amp;gt; string &amp;#039;CmRRAAAA_pB5EDe4puf3vqpGI2ACBvg5C5AchtIyS306-m7j_TBzbYsN9KNz8zU-W2u7qhPh1WptaIC5La2JXJxOeGfIlqekxmtKF27PQwz8q503Nbizc7sNH7OKcIhbKm_rssA1EhC9ikBsyUqi3ruykyou0NHGGhTpsMBsUvdbBYkcutfmME-AuOwzWA&amp;#039; (length=190)&lt;br /&gt;
          &amp;#039;types&amp;#039; =&amp;gt; &lt;br /&gt;
            array (size&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Liña 6: A nos interésanos a clave &amp;#039;results&amp;#039;, polo tanto:  &amp;lt;b&amp;gt;$datos[&amp;#039;results&amp;#039;]&amp;lt;/b&amp;gt; (que é un array asociativo) accederemos ao conxunto de resultados. Soamente teremos que percorrer dito array (foreach) e por cada elemento ($dato) acceder ás propiedades que nos interesen ($dato[&amp;#039;name&amp;#039;] ou $dato[&amp;#039;formatted_address&amp;#039;] por exemplo).&lt;br /&gt;
:: Esta información sería gardada nun array que será enviado á vista para que amose o resultado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Se a API espera recibir un login e ou password, debemos envialo desta forma:&lt;br /&gt;
::&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;3-6&amp;quot; &amp;gt;&lt;br /&gt;
         .....................&lt;br /&gt;
         $res = $client-&amp;gt;get(&amp;#039;url&amp;#039;,[&lt;br /&gt;
             &amp;#039;auth&amp;#039; =&amp;gt;&lt;br /&gt;
                [&amp;#039;username&amp;#039;,&lt;br /&gt;
                 &amp;#039;password&amp;#039;&lt;br /&gt;
                ]&lt;br /&gt;
         ]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lembrar que esta información envíase cifrada con base64 e se se captura o tráfico pódese descifrar facilmente.&lt;br /&gt;
: O ideal sería utilizar unha comunicación &amp;#039;&amp;#039;&amp;#039;https&amp;#039;&amp;#039;&amp;#039; cifrada con SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2024).&lt;/div&gt;</summary>
		<author><name>Angelfg</name></author>
		
	</entry>
</feed>