Cómo Consumir APIs REST con PHP Moderno

En este tutorial, aprenderás cómo consumir APIs REST utilizando PHP moderno. Veremos ejemplos prácticos y explicaremos cada paso detalladamente.

Prerrequisitos

  • Conocimientos básicos de PHP
  • PHP 7.1 o superior
  • Composer
  • Curl

Instalación de Dependencias

Para consumir APIs REST de manera eficiente en PHP, utilizaremos la biblioteca Guzzle. Es una biblioteca popular para hacer solicitudes HTTP en PHP. Primero, instalaremos Guzzle usando Composer.

composer require guzzlehttp/guzzle

Una vez que hayas instalado Guzzle, podemos proceder con la implementación del consumo de APIs.

Realizando una Solicitud GET

A continuación, veremos un ejemplo de cómo realizar una solicitud GET a una API REST.

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://jsonplaceholder.typicode.com/posts');

if ($response->getStatusCode() == 200) {
    $body = $response->getBody();
    $data = json_decode($body, true);
    print_r($data);
} else {
    echo 'Error: ' . $response->getStatusCode();
}

En el código anterior, estamos utilizando Guzzle para hacer una solicitud GET a la API de JSONPlaceholder y obteniendo la lista de posts.

Realizando una Solicitud POST

A continuación, veremos cómo realizar una solicitud POST utilizando Guzzle.

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();

$data = [
    'title' => 'foo',
    'body' => 'bar',
    'userId' => 1
];

$response = $client->request('POST', 'https://jsonplaceholder.typicode.com/posts', [
    'json' => $data
]);

if ($response->getStatusCode() == 201) {
    $body = $response->getBody();
    $data = json_decode($body, true);
    print_r($data);
} else {
    echo 'Error: ' . $response->getStatusCode();
}

En este ejemplo, estamos enviando una solicitud POST a JSONPlaceholder con un cuerpo JSON y obteniendo la respuesta de la API.

Realizando una Solicitud PUT

Para actualizar datos en una API REST, podemos usar una solicitud PUT. A continuación se muestra un ejemplo.

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();

$data = [
    'title' => 'foo',
    'body' => 'bar',
    'userId' => 1
];

$response = $client->request('PUT', 'https://jsonplaceholder.typicode.com/posts/1', [
    'json' => $data
]);

if ($response->getStatusCode() == 200) {
    $body = $response->getBody();
    $data = json_decode($body, true);
    print_r($data);
} else {
    echo 'Error: ' . $response->getStatusCode();
}

Este ejemplo muestra cómo actualizar una entrada específica en la API de JSONPlaceholder.

Realizando una Solicitud DELETE

Finalmente, veremos cómo eliminar una entrada en una API REST utilizando una solicitud DELETE.

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();

$response = $client->request('DELETE', 'https://jsonplaceholder.typicode.com/posts/1');

if ($response->getStatusCode() == 200) {
    echo 'Post deleted successfully';
} else {
    echo 'Error: ' . $response->getStatusCode();
}

En este ejemplo, estamos enviando una solicitud DELETE para eliminar una entrada específica de la API de JSONPlaceholder.

Cómo Usar cURL en PHP para Consumir APIs REST

Además de Guzzle, también podemos hacer solicitudes HTTP utilizando cURL en PHP. A continuación, proporcionamos ejemplos de cómo realizar solicitudes utilizando cURL en PHP.

Ejemplo de Solicitud GET usando cURL

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://jsonplaceholder.typicode.com/posts');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

if ($response !== false) {
    $data = json_decode($response, true);
    print_r($data);
} else {
    echo 'Error: '.curl_error($ch);
}
?>

En este ejemplo, estamos realizando una solicitud GET a la API de JSONPlaceholder, obteniendo la lista de publicaciones y verificando si la solicitud tuvo éxito.

Ejemplo de Solicitud POST usando cURL

<?php
$ch = curl_init();
$data = json_encode([
    'title' => 'foo',
    'body' => 'bar',
    'userId' => 1
]);
curl_setopt($ch, CURLOPT_URL, 'https://jsonplaceholder.typicode.com/posts');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

if ($response !== false) {
    $data = json_decode($response, true);
    print_r($data);
} else {
    echo 'Error: '.curl_error($ch);
}
?>

Aquí, estamos realizando una solicitud POST a la API de JSONPlaceholder, enviando un cuerpo JSON y verificando la respuesta de la API.

Ejemplo de Solicitud PUT usando cURL

<?php
$ch = curl_init();
$data = json_encode([
    'title' => 'foo',
    'body' => 'bar',
    'userId' => 1
]);
curl_setopt($ch, CURLOPT_URL, 'https://jsonplaceholder.typicode.com/posts/1');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

if ($response !== false) {
    $data = json_decode($response, true);
    print_r($data);
} else {
    echo 'Error: '.curl_error($ch);
}
?>

En este ejemplo, actualizamos una entrada específica en la API de JSONPlaceholder utilizando una solicitud PUT.

Ejemplo de Solicitud DELETE usando cURL

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://jsonplaceholder.typicode.com/posts/1');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

if ($response !== false) {
    echo 'Post deleted successfully';
} else {
    echo 'Error: ' . curl_error($ch);
}
?>

Finalmente, en este ejemplo realizamos una solicitud DELETE para eliminar una entrada específica de la API de JSONPlaceholder.

Conclusión

En este tutorial, hemos explorado cómo consumir APIs REST utilizando PHP moderno con la ayuda de la biblioteca Guzzle y cURL. Guzzle proporciona una forma amigable y poderosa de manejar solicitudes HTTP, mientras que cURL sigue siendo una opción sólida y versátil. Independientemente de la herramienta que elijas, PHP ofrece diversas maneras de interactuar eficientemente con APIs REST, permitiéndote integrar y consumir servicios web en tus aplicaciones. Esperamos que estos ejemplos prácticos te hayan sido útiles para comprender mejor cómo realizar solicitudes GET, POST, PUT y DELETE en PHP.