Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/WS/Rest»
(Página creada con «__TOC__ ===REST=== *Término introducido por https://es.wikipedia.org/wiki/Roy_Fielding Roy Fielding en 2000 (es uno de los principales autores de la especificación HT...») |
|||
(9 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | {{:Usuario:ManuelRomero/PHP/servicioWeb/Rest/nav}} | ||
+ | |||
+ | |||
__TOC__ | __TOC__ | ||
===REST=== | ===REST=== | ||
Línea 4: | Línea 7: | ||
**Todos los '''''recursos''''' a los que accedemos en la web son '''''definidos''''' y '''''diseccionados''''' | **Todos los '''''recursos''''' a los que accedemos en la web son '''''definidos''''' y '''''diseccionados''''' | ||
*Rest define cómo se establece una interacción entre sistemas basada en un navegador web y '''''http''''' | *Rest define cómo se establece una interacción entre sistemas basada en un navegador web y '''''http''''' | ||
− | {{ | + | {{MRM_Puntos clave |
|title = Rest | |title = Rest | ||
− | |REST Permite definir una '''''interfaz''''' '''''web''''' | + | |REST Permite definir una '''''interfaz''''' '''''web'''''. |
+ | *No es un '''protocolo'''. | ||
+ | *Se puede considerar una '''especificación''' que nos indica cómo se pueden hacer las cosas con lo que ya tenemos, para que dos aplicaciones se entiendan. | ||
}} | }} | ||
;interfaz | ;interfaz | ||
− | * | + | *Establecer los nombres para poder ofrecer nuestra aplicación y que interactúen con nosotros |
− | **Cómo recoger los datos para poderlos interpretar | + | **Cómo recoger los datos para poderlos interpretar. |
− | ** | + | **Cómo generar una salida para que nos la entiendas. |
[[Imagen:Interfaz.png]] | [[Imagen:Interfaz.png]] | ||
;web | ;web | ||
− | * | + | *Red de páginas o recursos que se comunica por el protocolo '''''http''''' |
(No es una definición, pero sí un concepto importante y una realidad). | (No es una definición, pero sí un concepto importante y una realidad). | ||
− | {{ | + | {{MRM_Puntos clave| |
'''''Rest se centra en la manipulación de recursos a través de especificaciones http''''' | '''''Rest se centra en la manipulación de recursos a través de especificaciones http''''' | ||
}} | }} | ||
===Base de Rest=== | ===Base de Rest=== | ||
− | ;Rest no es un estándar, es una especificación basada en estándares | + | ;Rest no es un estándar, es una '''''especificación basada en estándares''''' |
#http | #http | ||
##Protocolo sin estado | ##Protocolo sin estado | ||
− | ## | + | ##Verbos o acciones en la solicitud GET, POST, DELETE, UPDATE y PUSH. |
#URL | #URL | ||
#Representación de los recursos | #Representación de los recursos | ||
#Tipos MIME : text/html , text/xml, text/json,... | #Tipos MIME : text/html , text/xml, text/json,... | ||
− | {{ | + | {{MRM_Puntos clave| |
*http es un protocolo sin estado | *http es un protocolo sin estado | ||
*Cada mensaje http contiene en sí mismo toda la información necesaria para comprender la petición | *Cada mensaje http contiene en sí mismo toda la información necesaria para comprender la petición | ||
}} | }} | ||
− | {{ | + | {{MRM_Puntos clave| |
− | El protocolo http establece en cada mensaje http un verbo o acción que encabeza la solicitud del mensaje | + | El protocolo http establece en cada mensaje http un verbo o acción que encabeza la solicitud del mensaje. |
− | Este puede ser | + | *Este puede ser: |
#GET Solicitar algo, es el tipo de mensaje por defecto | #GET Solicitar algo, es el tipo de mensaje por defecto | ||
#POST Para facilitar datos al servidor. Lo manejamos principalemnte en formularios | #POST Para facilitar datos al servidor. Lo manejamos principalemnte en formularios | ||
#DELETE Se facilita un dato al servidor para ser eliminado | #DELETE Se facilita un dato al servidor para ser eliminado | ||
#UPDATE Se facilita datos al servidor para ser actualizados | #UPDATE Se facilita datos al servidor para ser actualizados | ||
− | # | + | #PUT Indica una actualización o inserción de un elemento. Se podría hacer todo con POST, en realidad PUT lo podemos identificar con un insert. |
+ | {{MRM_Recursos en la Web|http://notasjs.blogspot.com.es/2013/07/http-diferencia-entre-post-y-put.html}} | ||
}} | }} | ||
− | *Estas acciones | + | *Estas acciones suelen ser comparados con las operaciones asociadas a la tecnología de base de datos, |
operaciones '''''CRUD''''': '''CREATE''', '''READ''', '''UPDATE''', '''DELETE'''. | operaciones '''''CRUD''''': '''CREATE''', '''READ''', '''UPDATE''', '''DELETE'''. | ||
*Existen otra analogías como podemos ver en la tabla siguiente: | *Existen otra analogías como podemos ver en la tabla siguiente: | ||
Línea 63: | Línea 69: | ||
Update POST Update Pegar después >> | Update POST Update Pegar después >> | ||
Delete DELETE Delete Cortar Del/rm | Delete DELETE Delete Cortar Del/rm | ||
− | {{ | + | {{MRM_Puntos clave| |
*'''''URI:''''' REST usa una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es direccionable únicamente a través de su URI. | *'''''URI:''''' REST usa una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es direccionable únicamente a través de su URI. | ||
*'''''URL''''' la representación del estado en un momento dado den un sistema REST es básicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.}} | *'''''URL''''' la representación del estado en un momento dado den un sistema REST es básicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.}} | ||
+ | ===Por qué reescribir URL=== | ||
+ | *Para usar Rest, se suele hacer que la url que solicito sea lo que se llama amigable, es decir que no tiene porqué corresponder directamente al recurso que voy a localizar, sino que puedo establecer otro nombre más amigable para acceder a ese recurso. | ||
+ | *Por ejemplo si quiere acceder a una página para obtener un libro determinado | ||
+ | http://misitioWeb/App1/Biblioteca/libros/indesx.php?id_libro=8456 | ||
+ | *Está claro que será más fácil ofrecer la url como | ||
+ | http://misitioWeb/libro/8456 | ||
+ | *De lo que se trata es de escribir o invocar la segunda url y que realmente se ejecute la primera | ||
+ | En cualquier caso está práctica nos permitiría, además de esto: | ||
+ | #Permitir que las direcciones URL sean más amigables al usuario y los buscadores. | ||
+ | #Prevenir el “hot linking” o que usen tus imagenes en otros sitios. | ||
+ | #Esconder las direcciones web reales de tu servidor a los usuarios. | ||
+ | #Redirigir de forma transparente las peticiones web. | ||
====URI y URL's amigables==== | ====URI y URL's amigables==== | ||
<br /> | <br /> | ||
− | {{ | + | {{MRM_Definicion|title=Qué es una URI| |
Un URI es un '''''identificador de recurso único'''''}} | Un URI es un '''''identificador de recurso único'''''}} | ||
*Una URL es el localizador de ese recurso, por ejemplo | *Una URL es el localizador de ese recurso, por ejemplo | ||
Línea 74: | Línea 92: | ||
La URL es http://localhost/tienda.php | La URL es http://localhost/tienda.php | ||
El URI o recurso es producto.php | El URI o recurso es producto.php | ||
− | {{ | + | {{MRM_Referencias en la web| |
* http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-1.html | * http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-1.html | ||
* http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-2-directivas.html | * http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-2-directivas.html | ||
Línea 80: | Línea 98: | ||
}} | }} | ||
− | *Una URL amigable es una URL que el cliente va a escribir en el navegador, aunque no existe tal cual en el servidor, sino que el servidor realiza una | + | *Una URL amigable es una URL que el cliente va a escribir en el navegador, aunque no existe tal cual en el servidor, sino que el servidor realiza una traducción |
http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-1.html#more | http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-1.html#more | ||
*supongamos que en nuestro proyecto tenemos la URL | *supongamos que en nuestro proyecto tenemos la URL | ||
Línea 99: | Línea 117: | ||
sudo service apache2 restart | sudo service apache2 restart | ||
*Hay que recordar que para que se apliquen las directivas del fichero .htaccess, debemos tener habilitada para ese directorio (o para todos) la directiva '''''AllowOverride All''''' | *Hay que recordar que para que se apliquen las directivas del fichero .htaccess, debemos tener habilitada para ese directorio (o para todos) la directiva '''''AllowOverride All''''' | ||
+ | {{Tip|Si esta directiva está habilitada para un directorio, se aplicará a los subdirectorios que puediera haber a partir de éste}} | ||
+ | {{Tip|Es una buena práctica de programación (en este caso de seguridad también) solo habilitar directivas a los directorios que nos interesen y no hacerlo de forma general para todos}} | ||
+ | *Esto sería hacerlo para todos | ||
<Directory /var/www> | <Directory /var/www> | ||
AllowOverride All | AllowOverride All | ||
</Directory> | </Directory> | ||
+ | *Esto sería hacerlo para una parte de mi directorio | ||
+ | <Directory /var/www/servicio_rest> | ||
+ | AllowOverride All | ||
+ | </Directory> | ||
+ | *Después de modificar un fichero de configuración, hay que rebotar el servicio | ||
*Ahora escribimos las reglas de | *Ahora escribimos las reglas de | ||
RewriteEngine on | RewriteEngine on | ||
Línea 110: | Línea 136: | ||
RewriteRule ^(.+)$ index.php?url=$1 [QSA,NC,L] | RewriteRule ^(.+)$ index.php?url=$1 [QSA,NC,L] | ||
*Las reglas de reescritura se deben definir en los ficheros de configuración de Apache (httpd.conf) o, en el caso que este activada la capacidad de reescritura, en un archivo .htaccess localizado en el directorio del servidor web donde se quiere que tenga efecto. | *Las reglas de reescritura se deben definir en los ficheros de configuración de Apache (httpd.conf) o, en el caso que este activada la capacidad de reescritura, en un archivo .htaccess localizado en el directorio del servidor web donde se quiere que tenga efecto. | ||
− | # | + | #Estamblecemos /servicio_rest como directorio base |
# Las tres reglas siguiente establece que directorios (-d), ficheros (-f) y enlaces simbólicos (-l) que ya existen, sobre ellos no sea aplicada las reglas de reescritura. | # Las tres reglas siguiente establece que directorios (-d), ficheros (-f) y enlaces simbólicos (-l) que ya existen, sobre ellos no sea aplicada las reglas de reescritura. | ||
*El último punto es la reescritura | *El último punto es la reescritura | ||
Línea 120: | Línea 146: | ||
http://localhost/servicio_rest/productos/1 | http://localhost/servicio_rest/productos/1 | ||
http://localhost/servicio_rest/index.php?url=productos/1 | http://localhost/servicio_rest/index.php?url=productos/1 | ||
+ | |||
===Haciendo un servicio REST=== | ===Haciendo un servicio REST=== | ||
*Ahora toca la parte práctica | *Ahora toca la parte práctica | ||
Línea 129: | Línea 156: | ||
*La solicitud puede ser GET POST PUT DELETE | *La solicitud puede ser GET POST PUT DELETE | ||
*En php podemos saber este valor de la superglobal $_SERVER | *En php podemos saber este valor de la superglobal $_SERVER | ||
− | {{ | + | {{MRM_puntos clave| |
<source lang=php> | <source lang=php> | ||
$metodo = $_SERVER['REQUEST_METHOD'] | $metodo = $_SERVER['REQUEST_METHOD'] | ||
Línea 161: | Línea 188: | ||
} | } | ||
+ | echo $respuesta; | ||
+ | /* | ||
+ | Si respuesta tuviera una estructura de array o fuera objeto habría que usar un json que es en parte serializar | ||
echo json_encode ($respuesta, true); | echo json_encode ($respuesta, true); | ||
+ | */ | ||
Línea 172: | Línea 203: | ||
*En este caso la parte de cliente es muy sencilla, simplemente tiene que hacer una llamada a esta página y leer su contenido | *En este caso la parte de cliente es muy sencilla, simplemente tiene que hacer una llamada a esta página y leer su contenido | ||
*Para esto puede valer usar la fución '''''get_file_content''''' | *Para esto puede valer usar la fución '''''get_file_content''''' | ||
+ | *Lógicamente en este caso estamos haciendo una solicitud GET | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 182: | Línea 214: | ||
?> | ?> | ||
</source> | </source> | ||
− | {{ | + | {{MRM_Actividad| |
*Modifica el ejemplo anterior sin cambiar el nombre de los ficheros (usa el módulo rewrite de apache para que | *Modifica el ejemplo anterior sin cambiar el nombre de los ficheros (usa el módulo rewrite de apache para que | ||
*La página web que invoca al servicio le pase un nombre de persona y un idioma (inglés, francés o español) | *La página web que invoca al servicio le pase un nombre de persona y un idioma (inglés, francés o español) | ||
Línea 250: | Línea 282: | ||
====La parte del cliente==== | ====La parte del cliente==== | ||
+ | *Si desde el cliente queremos realizar una invocación que no sea siempre GET, puediendo realizar invocaciones PUT, POST, .... vamos a usar la librería Curl | ||
;Curl | ;Curl | ||
Înstalamos el comando o aplicación '''''curl''''' | Înstalamos el comando o aplicación '''''curl''''' | ||
Línea 255: | Línea 288: | ||
*Lo primero debemos tener instalada la librería de curl para php | *Lo primero debemos tener instalada la librería de curl para php | ||
sudo apt-get install php5-curl | sudo apt-get install php5-curl | ||
− | * | + | *En php7 |
+ | sudo apt-get install php-curl | ||
*La forma de realizar una solicitudes es realizando una llamada completa a la web | *La forma de realizar una solicitudes es realizando una llamada completa a la web | ||
*Ver el contenido del fichero como hemos hecho antes, es simplemente hacer una especie RPC (Invocación o llamada a métodos remotos). | *Ver el contenido del fichero como hemos hecho antes, es simplemente hacer una especie RPC (Invocación o llamada a métodos remotos). | ||
Línea 265: | Línea 299: | ||
#Ejecutamos la sesión '''''curl_exec()''''' Aquí se puede recoger el resultado | #Ejecutamos la sesión '''''curl_exec()''''' Aquí se puede recoger el resultado | ||
#Cerramos la sesión con curl_close() | #Cerramos la sesión con curl_close() | ||
− | {{ | + | {{MRM_Resumen| |
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 344: | Línea 378: | ||
curl_setopt($llamada, CURLOPT_CUSTOMREQUEST, "PUT"); | curl_setopt($llamada, CURLOPT_CUSTOMREQUEST, "PUT"); | ||
curl_setopt($cllamada, CURLOPT_POSTFIELDS, http_build_query($datos)) | curl_setopt($cllamada, CURLOPT_POSTFIELDS, http_build_query($datos)) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> |
Última revisión de 10:55 17 abr 2017
Contenido
REST
- Término introducido por [Roy Fielding] en 2000 (es uno de los principales autores de la especificación HTTP)
- Todos los recursos a los que accedemos en la web son definidos y diseccionados
- Rest define cómo se establece una interacción entre sistemas basada en un navegador web y http
REST Permite definir una interfaz web.
|
- interfaz
- Establecer los nombres para poder ofrecer nuestra aplicación y que interactúen con nosotros
- Cómo recoger los datos para poderlos interpretar.
- Cómo generar una salida para que nos la entiendas.
- web
- Red de páginas o recursos que se comunica por el protocolo http
(No es una definición, pero sí un concepto importante y una realidad).
Base de Rest
- Rest no es un estándar, es una especificación basada en estándares
- http
- Protocolo sin estado
- Verbos o acciones en la solicitud GET, POST, DELETE, UPDATE y PUSH.
- URL
- Representación de los recursos
- Tipos MIME : text/html , text/xml, text/json,...
|
El protocolo http establece en cada mensaje http un verbo o acción que encabeza la solicitud del mensaje.
Plantilla:MRM Recursos en la Web
|
- Estas acciones suelen ser comparados con las operaciones asociadas a la tecnología de base de datos,
operaciones CRUD: CREATE, READ, UPDATE, DELETE.
- Existen otra analogías como podemos ver en la tabla siguiente:
Accion | HTTP | SQL | Copy&Paste | UNIX Shell |
---|---|---|---|---|
Create | PUT | Insert | Pegar | > |
Read | GET | Select | Copiar | < |
Update | POST | Update | Pegar | >> |
Delete | DELETE | Delete | Cortar | Del / rm |
Acción HTTP SQL Copy&Paste Unix Shell Create PUT Insert Pegar > Read GET Select Copiar < Update POST Update Pegar después >> Delete DELETE Delete Cortar Del/rm
|
Por qué reescribir URL
- Para usar Rest, se suele hacer que la url que solicito sea lo que se llama amigable, es decir que no tiene porqué corresponder directamente al recurso que voy a localizar, sino que puedo establecer otro nombre más amigable para acceder a ese recurso.
- Por ejemplo si quiere acceder a una página para obtener un libro determinado
http://misitioWeb/App1/Biblioteca/libros/indesx.php?id_libro=8456
- Está claro que será más fácil ofrecer la url como
http://misitioWeb/libro/8456
- De lo que se trata es de escribir o invocar la segunda url y que realmente se ejecute la primera
En cualquier caso está práctica nos permitiría, además de esto:
- Permitir que las direcciones URL sean más amigables al usuario y los buscadores.
- Prevenir el “hot linking” o que usen tus imagenes en otros sitios.
- Esconder las direcciones web reales de tu servidor a los usuarios.
- Redirigir de forma transparente las peticiones web.
URI y URL's amigables
- Una URL es el localizador de ese recurso, por ejemplo
http://localhost/tienda/producto.php La URL es http://localhost/tienda.php El URI o recurso es producto.php Plantilla:MRM Referencias en la web
- Una URL amigable es una URL que el cliente va a escribir en el navegador, aunque no existe tal cual en el servidor, sino que el servidor realiza una traducción
http://programandolo.blogspot.com.es/2013/06/reglas-de-reescritura-parte-1.html#more
- supongamos que en nuestro proyecto tenemos la URL
http://localhost/reescritura/paginaAmigosConfianza.php&dato=pedro
- Es claro ver que a alguien le sería mas claro escribir
http://localhost/reescritura/amigo/pedro
- Para conseguir esto, lo que tendríamos que hacer es establecer una regla en el servidor de modo que traduzca una url en la otra
- Pasos a seguir
- La sobreescritura de direcciones amigables la hace el módulo rewrite' de apache
- Primero miramos a ver si tenemos ese módulo instalado
/usr/sbin/apachectl -t -D DUMP_MODULES
- Nos listará los módulos instalados. Buscamos rewrite
- En caso de no tenerlo instalado lo instalamos
sudo a2enmod rewrite
- Después reiniciamos el servicio
sudo service apache2 restart
- Hay que recordar que para que se apliquen las directivas del fichero .htaccess, debemos tener habilitada para ese directorio (o para todos) la directiva AllowOverride All
- Esto sería hacerlo para todos
<Directory /var/www> AllowOverride All </Directory>
- Esto sería hacerlo para una parte de mi directorio
<Directory /var/www/servicio_rest> AllowOverride All </Directory>
- Después de modificar un fichero de configuración, hay que rebotar el servicio
- Ahora escribimos las reglas de
RewriteEngine on RewriteBase /servicio_rest/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,NC,L]
- Las reglas de reescritura se deben definir en los ficheros de configuración de Apache (httpd.conf) o, en el caso que este activada la capacidad de reescritura, en un archivo .htaccess localizado en el directorio del servidor web donde se quiere que tenga efecto.
- Estamblecemos /servicio_rest como directorio base
- Las tres reglas siguiente establece que directorios (-d), ficheros (-f) y enlaces simbólicos (-l) que ya existen, sobre ellos no sea aplicada las reglas de reescritura.
- El último punto es la reescritura
En este caso tenemos la expresión regunar ^(.+)$
- Se puede leer como cualquier conjunto de caracteres al principio que contenga uno o más caracteres hasta el final
- Esta expresión regular será tomada seguida de el dominio y el directorio establecido como base, es decir después de http://localhost/servicio_rest/ .....
- Posteriormente puedo tomar su contenido en la variable $1
- Nos realiza la transformación siguiente (1) escrible el cliente, (2) lee el servidor
http://localhost/servicio_rest/productos/1 http://localhost/servicio_rest/index.php?url=productos/1
Haciendo un servicio REST
- Ahora toca la parte práctica
- Vamos a implementar un servicio web que realice una suma y resta, al igual que hicimos con soap
- Antes de ello, para probarlo haremos un ejemplo que solo en el que el servicio nos salude
- Servidor
- En el servidor lo que tenemos que hacer es recoger la solicitud que nos hacen y crear una respuesta
- La solicitud puede ser GET POST PUT DELETE
- En php podemos saber este valor de la superglobal $_SERVER
- La parte del cliente
- En este caso la parte de cliente es muy sencilla, simplemente tiene que hacer una llamada a esta página y leer su contenido
- Para esto puede valer usar la fución get_file_content
- Lógicamente en este caso estamos haciendo una solicitud GET
<?php $response = file_get_contents('http://localhost/servidor_rest/index.php'); $response = json_decode($response); echo "Saludo que viene del servidor $response"; ?>
|
La parte del cliente
- Si desde el cliente queremos realizar una invocación que no sea siempre GET, puediendo realizar invocaciones PUT, POST, .... vamos a usar la librería Curl
- Curl
Înstalamos el comando o aplicación curl
sudo apt-get install curl
- Lo primero debemos tener instalada la librería de curl para php
sudo apt-get install php5-curl
- En php7
sudo apt-get install php-curl
- La forma de realizar una solicitudes es realizando una llamada completa a la web
- Ver el contenido del fichero como hemos hecho antes, es simplemente hacer una especie RPC (Invocación o llamada a métodos remotos).
- Usar curl con php es relativamente sencillo
http://php.net/manual/es/curl.examples-basic.php
- Para usarlo seguimos los siguientes pasos:
- Inicializamos una sesión cURL usando curl_init()
- Se establecen las opciones para la transferencia con curl_setopt() (Se especifican más abajo.
- Ejecutamos la sesión curl_exec() Aquí se puede recoger el resultado
- Cerramos la sesión con curl_close()
<?php $ch = curl_init("http://www.example.com/"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); ?> |
- Una lista de las opciones más utilizadas
- Especificar la URL
- CURLOPT_URL EL la URL donde está el recurso al que queremos acceder. También se puede establecer en el método curl_init()
$llamada = curl_init(); curl_setopt($llamada, CURLOPT_URL, "http://localhost/servicio_rest/productos);
- O bien
$llamada = curl_init("http://localhost/servicio_rest/productos);
- CURLOPT_HEADER
- Para incluir las cabeceras de las respuestas (true o false
- Normalmente lo estableceremos a false, si solo nos interesa el contendio
- Se puede establecer a false, o pasar una cadena de caracteres tipo
$llamada = curl_init(); curl_setopt($llamada, CURLOPT_HEADER, false);
- CURLOPT_RETURNTRANSFER
- Para que en lugar de mostrar la respuesta, devuelva una cadena de caracteres de tipo string
$llamada = curl_init(); curl_setopt($llamada, CURLOPT_RETURNTRANSFER, true);
- CURLOPT_POST
- Establece una solicitud post. En este caso se usa la opción siguiente para pasar datos a la solicitud
$llamada = curl_init(); curl_setopt($llamada, CURLOPT_POST, true);
- CURLOPT_POSTFIELDS
- Para pasar los datos de la solicitud POST
curl_setopt($llamada, CURLOPT_POSTFIELDS, "usuario=dwes&pass=abc123.;");
- Alternativamente podemos usar el método http_build_query (...) pasándole un array asociativo
$llamada = curl_init(); $datosPost=['usuariol'=>'dwes', password' =>'abc123.' ]; ); $llamada = curl_init(); curl_setopt($llamada, CURLOPT_URL, "http://localhost/servicios_rest/login.php"); curl_setopt($llamada, CURLOPT_POST, true); curl_setopt($llamada, CURLOPT_POSTFIELDS, http_build_query($datosPost));
- CURLOPT_CUSTOMERREQUEST
- Establece la acción solicitada al servidor cuando esta no es ni GET (por defecto) ni POST (CURL_POST). Como ya hemos comentado suele ser "DELETE"o 'PUT' u otros tipos de peticiones HTTP menos comunes.
- Para pasar datos que se necesitaran en esta solicitud, se usa igualemnte la opción CURLOPT_POSTFIELDS
$llamada = curl_init(); $datos=['producto'=>'Cod_123dwes';stock=500]; ); curl_setopt($llamada, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($lamada, CURLOPT_POSTFIELDS, http_build_query($datos)); .... $datos=['producto'=>'Cod_123dwes' curl_setopt($llamada, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($cllamada, CURLOPT_POSTFIELDS, http_build_query($datos))