Como: Crear una llamada a la API REST de Magento 2
publicado el
11/10/2018
Estos fragmentos de código te mostrarán cómo solicitar a la API REST de Magento2 y recuperar algunos datos.
En este ejemplo, consultaré a la API REST de Magento2 para recuperar todos los productos actualizados desde 2018-10-09 00: 00: 00
.
Este método asume que:
- Estas usuando un usuario admin para generar el token de autenticaciòn.
- Tienes una instancia de Magento2 corriendo en tu entorno local.
Obteniendo el Token de Autenticación
Crea un archivo php con lo siguiente:
<?php
// URL de la API para autenticación
$apiURL = "https://magento2.test/index.php/rest/V1/integration/admin/token";
// Parámetros que pasan con URL
$data = ["username" => "admin", "password" => "magento123"];
$data_string = json_encode($data);
$ch = curl_init($apiURL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json", "Content-Length: " . strlen($data_string)]);
$token = curl_exec($ch);
// Decodificar el token generado y guardarlo en una variable
$token = json_decode($token);
echo 'Token es:' . $token . PHP_EOL;
Luego ejecuta este archivo desde el terminal.
$ php magento_api_test.php
Esto se conectará a la instancia de Magento usando las credenciales de el usuario administrador especificado para generar un token que usaremos más tarde para interactuar con la API REST.
La salida del comando anterior debería ser similar a esta:
$ Token es: xjggqmqgb7cdxcvy9svoo0dr0pee6ijg
Using the Generated Token
Elimina la línea echo
y agrega lo siguiente a tu archivo php:
// Usando el token anterior en el encabezado
$headers = ["Authorization: Bearer " . $token];
// URL de API para obtener todos los productos con updated_at superior a una fecha
// /rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=updated_at&searchCriteria[filter_groups][0][filters][0][value]=2018-10-09%2000:00:00&searchCriteria[filter_groups][0][filters][0][condition_type]=gt&searchCriteria[pageSize]=1
$requestUrl = "https://magento2.test/rest/V1/" .
"products?" .
"searchCriteria[filter_groups][0][filters][0][field]=updated_at&" .
"searchCriteria[filter_groups][0][filters][0][value]=2018-10-09%2000:00:00&" .
"searchCriteria[filter_groups][0][filters][0][condition_type]=gt&" .
"searchCriteria[pageSize]=10&";
$ch = curl_init($requestUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
// Resultado de decodificación
$result = json_decode($result);
// Imprimiendo el resultado
var_dump($result);
Enlaces relacionados: