PHP Guzzle - Sobreescritura de método HTTP
Como apoyo a los desarrolladores realizaremos algunos ejemplos de petición por medio de PHP utilizando Guzzle y haciendo la sobreescritura del método de petición, utilizaremos los mismos ejercicios que los del ejemplo PHP Guzzle - metodo GET pero utilizando la configuración POST de Guzzle, la finalidad de estos ejercicios s mostrarle al desarrollador una manera sencilla como realizar la sobreescritura del método de petición y que puedan implementarlo en sus proyectos, para uso practico utilizaremos el ambiente SANDBOX DE PRUEBAS para los ejemplos.
Para más información acerca de lo que es la sobreescritura del método de petición ingresa en la sección: Sobreescritura del método HTTP.
Ejemplo 1: get-currencies
Para este ejemplo nos apoyaremos de la documentación del método get-currencies para obtener el listado de monedas soportadas en la plataforma.
Recordemos que el Token API debe de esta generado y vigente para poder ingresarlo en el header de autorización bearer.
También utilizaremos el parámetro _method
para realizar la sobreescritura del metodo de petición enviando GET que es el que originalmente nos solicita la documentación de get-currencies.
Utilizaremos el siguiente endpoint:
https://sandbox.aceptabits.com/api/thirdparty/v1/get-currencies
Y el siguiente fragmento de código para realizar la petición:
<?php
$token = "tu-token-api-va-aqui";
$guzzle = new GuzzleHttp;
$response = $guzzle->post("https://sandbox.aceptabits.com/api/thirdparty/v1/get-currencies", [
'headers' => [ 'Authorization' => 'Bearer ' . $token ],
'form_params' => [
'_method' => 'GET'
],
]);
$res = $response->getBody()->getContents();
$res = json_decode($res, true);
?>
Al ejecutar obtenemos en la variable $res
la siguiente información:
array:3 [
"status" => true
"success" => array:1 [
"code" => "0000"
]
"data" => array:2 [
0 => array:4 [
"name" => "PesoBits"
"code" => "PBT"
"color" => "#029400"
"buy_mxn_price" => "2.80000000"
]
1 => array:4 [
"name" => "Bitcoin"
"code" => "BTC"
"color" => "#F7931B"
"buy_mxn_price" => "1114587.11000000"
]
]
]
Ejemplo 2: get-shops
Para este ejemplo nos apoyaremos de la documentación del método get-shops para obtener el listado de tiendas que se tienen creadas.
Recordemos que el Token API debe de esta generado y vigente para poder ingresarlo en el header de autorización bearer.
También utilizaremos el parámetro _method
para realizar la sobreescritura del metodo de petición enviando GET que es el que originalmente nos solicita la documentación de get-shops, así mismo los parámetros de paginación que también nos solicita la documentación.
Utilizaremos el siguiente endpoint:
https://sandbox.aceptabits.com/api/thirdparty/v1/get-shops
Y el siguiente fragmento de código para realizar la petición:
<?php
$token = "tu-token-api-va-aqui";
$guzzle = new GuzzleHttp;
$response = $guzzle->post("https://sandbox.aceptabits.com/api/thirdparty/v1/get-shops", [
'headers' => [ 'Authorization' => 'Bearer ' . $token ],
'form_params' => [
'_method' => 'GET',
'limit' => 10,
'page' => 1
],
]);
$res = $response->getBody()->getContents();
$res = json_decode($res, true);
?>
Al ejecutar obtenemos en la variable $res
la siguiente información:
array:3 [
"status" => true
"success" => array:1 [
"code" => "0039"
]
"data" => array:7 [
"current_page" => 1
"data" => array:3 [
0 => array:22 [
"code" => "pgbsho53692751148545611"
"name" => "Refacciones Torres"
"created_at" => "2024-08-14T00:56:50.000000Z"
"created_at_format" => "2024-08-13 18:56:50"
"total_services" => 1
"total_products" => 0
"total_customers" => 1
"total_orders" => 0
"total_agents" => 0
"total_branches" => 0
"isEditable" => "-1"
"isDefault" => "0"
"description" => null
"website" => null
"address" => null
"phone" => null
"email" => null
"lat" => null
"lng" => null
"has_logo" => "0"
"logo_file" => null
"isShown" => "0"
]
1 => array:22 [
"code" => "pgbsho44747793463129176"
"name" => "Velas martin"
"created_at" => "2024-08-06T21:40:57.000000Z"
"created_at_format" => "2024-08-06 15:40:57"
"total_services" => 7
"total_products" => 3
"total_customers" => 7
"total_orders" => 24
"total_agents" => 3
"total_branches" => 5
"isEditable" => "-1"
"isDefault" => "0"
"description" => "Velas chidas"
"website" => null
"address" => null
"phone" => null
"email" => null
"lat" => null
"lng" => null
"has_logo" => "-1"
"logo_file" => "pgbsho44747793463129176.png"
"isShown" => "-1"
]
2 => array:22 [
"code" => "pgbsho40996222369461182"
"name" => "Tienda general"
"created_at" => "2024-07-18T20:09:19.000000Z"
"created_at_format" => "2024-07-18 14:09:19"
"total_services" => 13
"total_products" => 2
"total_customers" => 9
"total_orders" => 2
"total_agents" => 5
"total_branches" => 0
"isEditable" => "0"
"isDefault" => "-1"
"description" => null
"website" => null
"address" => null
"phone" => null
"email" => null
"lat" => null
"lng" => null
"has_logo" => "0"
"logo_file" => null
"isShown" => "-1"
]
]
"from" => 1
"last_page" => 1
"per_page" => 10
"to" => 3
"total" => 3
]
]
La implementación es bastante sencilla por medio de Guzzle y haciendo la sobreescritura del método de petición, esto es bastante útil si lo que se pretende es unificar en un solo lugar todas las peticiones y no tener un método para las peticiones GET y otro para las peticiones POST, ya dependiendo de cómo va a manejar la información el desarrollador deberá de agregar o quitar, pero la petición al servicio queda realizada de manera simple y sin extensas líneas de código.
Si tienes alguna duda recuerda que siempre puedes contactar con el equipo de soporte para desarrolladores ingresando en el siguiente enlace: Soporte para desarrolladores.