REST es un estilo de arquitectura para diseñar aplicaciones en red. La idea es que, en lugar de utilizar mecanismos complejos como CORBA, RPC o SOAP para conectarse entre máquinas, se utilice HTTP simple para realizar llamadas entre máquinas. De muchas formas, la World Wide Web en sí, basada en HTTP, puede verse como una arquitectura basada en REST. Las aplicaciones RESTful usan solicitudes HTTP para publicar datos (crear y / o actualizar), leer datos (por ejemplo, realizar consultas) y eliminar datos. Por lo tanto, REST usa HTTP para las cuatro operaciones CRUD (Crear / Leer / Actualizar / Eliminar).
Debido a que las API REST utilizan HTTP, pueden ser utilizadas por prácticamente cualquier lenguaje de programación y son fáciles de probar (es un requisito de una API REST que el cliente y el servidor sean independientes entre sí, lo que permite codificar en cualquier idioma y mejorar al soportar la longevidad y evolución).
Un servicio web RESTful (también llamado API web RESTful) es un servicio web implementado usando HTTP y los principios de REST.
Básicamente, para acceder a una api necesitamos ejecutar una solicitud en diferentes formatos según la acción que queramos lograr en un endpoint (URL) de la api. Con javascript, una simple XMLHttpRequest debería funcionar, pero con PHP hay otra forma de lograrlo, llamada cURL.
cURL es una biblioteca que le permite realizar solicitudes HTTP en PHP. Todo lo que necesita saber al respecto (y la mayoría de las otras extensiones) se puede encontrar en el manual de PHP. Para utilizar las funciones cURL de PHP, aunque la mayoría de las distribuciones PHP ya tienen instalado cURL, si este no es su caso, entonces necesita instalar el paquete »libcURL.
Usando cURL por ti mismo
Como se mencionó anteriormente, cURL es la forma de acceder a una API relajante desde PHP.
El siguiente método le ayudará a obtener el
Nota: se recomienda el uso de una biblioteca en lugar de cURL simple.
<?php
// Metodo: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value
function CallAPI($method, $url, $data = false)
{
$curl = curl_init();
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// Autenticación opcional:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
Si hubo un error, el método devolverá falso. Puede leer el siguiente tema que explica cómo manejar errores usando cURL .
Usar una biblioteca (Unirest)
Usando bibliotecas en lugar de reinventar la rueda, es por eso que es mejor usar Unirest en lugar de escribir sus propias funciones de solicitud, ya que esta biblioteca se ocupa de muchos problemas comunes a los que se enfrentaría usando cURL simple y se mantiene.
Unirest es un conjunto de bibliotecas HTTP ligeras disponibles en varios idiomas, construido y mantenido por Mashape, quien también mantiene la API Gateway Kong de código abierto.
Caracteristicas
- Métodos de utilidad a la llamada
GET
,HEAD
,POST
,PUT
,DELETE
,CONNECT
,OPTIONS
,TRACE
,PATCH
peticiones. - Admite parámetros de formulario, carga de archivos y entidades corporales personalizadas.
- Soporta gzip.
- Admite la autenticación básica, implícita, negociada y NTLM de forma nativa.
- Tiempo de espera personalizable.
- Encabezados predeterminados personalizables para cada solicitud (DRY).
- Análisis JSON automático en un objeto nativo para respuestas JSON.
Requisitos
- rizo
- PHP 5.4+
Para instalar Unirest PHP en su proyecto, use composer. Puede agregar la siguiente línea en su archivo composer.json:
{
"require-dev": {
"mashape/unirest-php": "2.*"
}
}
O ejecute el comando en la consola directamente en su lugar:
composer require mashape/unirest-php
Entonces podrás usar Unirest agregando una declaración de uso simple en la parte superior de su clase use Unirest;
.
Usando unirest
El siguiente código muestra una solicitud GET simple al punto final / search de la API de Spotify.
<?php
// buscar Canciones de Frank Sinatra
$headers = array('Accept' => 'application/json');
$query = array('q' => 'Frank sinatra', 'type' => 'track');
$response = Unirest\Request::get('https://api.spotify.com/v1/search',$headers,$query);
// o utilice una solicitud de texto sin formato
// $response = Unirest\Request::get('https://api.spotify.com/v1/search?q=Frank%20sinatra&type=track');
// Mostrar el resultado
dump($response->body);
Nota: si el código arroja un error con "Problema con el certificado SSL: no se puede obtener el certificado del emisor local" al usar Unirest con las API HTTPS, es posible que desee leer el siguiente artículo para aprender cómo resolverlo .
La variable de respuesta tiene las siguientes propiedades:
- encabezados [Matriz]: Matriz con el encabezado de la solicitud (Fecha, Servidor, etc.).
- cuerpo
- code [Int]: Código de respuesta de la solicitud.
- raw_body: el contenido sin procesar de la solicitud.
Tenga en cuenta que la propiedad del cuerpo se convirtió automáticamente en una matriz ya que la API devuelve la respuesta en formato JSON. Lea más sobre Unirest PHP en el sitio web oficial .
Utilice los métodos más comunes de disturbios:
<?php
Unirest\Request::get($url, $headers = array(), $parameters = null)
Unirest\Request::post($url, $headers = array(), $body = null)
Unirest\Request::put($url, $headers = array(), $body = null)
Unirest\Request::patch($url, $headers = array(), $body = null)
Unirest\Request::delete($url, $headers = array(), $body = null)
Que te diviertas ❤️!
Conviertete en un programador más sociable