Sobreescritura del método HTTP
En AceptaBits existe la posibilidad de sobrescribir el método HTTP enviándolo como un parámetro dentro de la petición, esto tiene algunos usos interesantes poro también algunas limitantes que vamos a mencionar a continuación.
Uno de los usos que los desarrolladores pueden darle a esta sobreescritura es que pueden ahorra código al hacer un solo método en el backend para todas las peticiones, sin embargo, esta sobreescritura solo funciona utilizando el método HTTP POST
, es decir, el único método de peticiones en el backend hecho por el desarrollador siempre deberá de ser el método HTTP POST
, no funciona con ningún otro, como por ejemplo el método GET
.
Para lograr esta sobreescritura se deberá de enviar en la petición el parametro llamado _method
, el cual deberá de tener el valor del método HTTP que queremos utilizar, por ejemplo:
- SI se quiere utilizar el método POST se deberá de configurar el parámetro de la siguiente manera: _method = POST.
- Si se quiere utilizar el método GET se deberá de configurar el parámetro de la siguiente manera: _method = GET.
Supongamos que queremos hacer una petición al endpoint:
https://aceptabits.com/api/thirdparty/v1/get-currencies
Como ya mencionamos en esta sección, el servicio de get-currencies
utiliza el método HTTP GET
para su consumo, recordemos que podemos encontrar la información de cada uno de los servicios en su respectiva documentación ingresando en Lista de métodos API.
En este caso lo normal sería configurar el cliente con el que se realizara la petición con el método HTTP GET
, tomemos de ejemplo el cliente Guzzle que es utilizado en PHP
para este tipo de peticiones:
<?php
$guzzle = new GuzzleHttp;
$token = "tu token api";
$response = $guzzle->get("https://aceptabits.com/api/thirdparty/v1/get-currencies", [
'headers' => [ 'Authorization' => 'Bearer ' . $token ],
]);
?>
Como podemos observar el cliente Guzzle se configura de modo que se utilice el método HTTP GET
para realizar la petición, sin embargo, utilizando la sobreescritura del método HTTP podemos realizar la misma petición de la siguiente manera:
<?php
$guzzle = new GuzzleHttp;
$token = "tu token api";
$response = $guzzle->post("https://aceptabits.com/api/thirdparty/v1/get-currencies", [
'headers' => [ 'Authorization' => 'Bearer ' . $token ],
'form_params' => [
'_method' => 'GET'
],
]);
?>
Podemos observar que se utiliza el método HTTP POST
como la base en la configuración del cliente, sin embargo, enviando el parámetro _method
con el valor GET
podemos realizar la misma petición y obtendremos el mismo resultado como si utilizáramos el método HTTP GET
directamente en la configuración del cliente.
Como ya mencionamos la sobreescritura del método HTTP es bastante útil si el desarrollador quiere unificar todo su código sin estar cambiando de configuración para consumir los servicios del API web de AceptaBits, siguiendo este ejemplo y unificando las particiones en un solo lugar podemos tener algo como lo siguiente:
<?php
function doClientCall($service_, $params_){
$guzzle = new GuzzleHttp;
$token = "tu token api";
$response = $guzzle->post("https://aceptabits.com/api/thirdparty/v1/" . $service_, [
'headers' => [ 'Authorization' => 'Bearer ' . $token ],
'form_params' => $params_,
]);
$res = $response->getBody()->getContents();
$res = json_decode($res, true);
return $res;
}
function exampleCallServiceA(){
$params = [
'_method' => 'GET'
];
$res = $this->doClientCall('get-currencies', $params);
}
function exampleCallServiceB(){
$params = [
'_method' => 'POST',
'name' => 'calculadora de bolsillo',
.
.
.
.
];
$res = $this->doClientCall('add-product', $params);
}
?>
Como podemos observar la función exampleCallServiceA
y la función exampleCallServiceB
utilizan a doClientCall
para realizar las peticiones, lo único que cambia en el contenido de $params
:
- Para
get-currencies
utilizamos el parámetro_method
con el valor deGET
para realizar el consumo del servicio. - Para
add-product
utilizamos el parámetro_method
con el valor dePOST
.
Como podrás observar también incluimos el parámetro name
con el valor calculadora de bolsillo
dentro de $params
como ejemplo en la petición de add-product
, así como unos puntos suspensivos que van hacia abajo que representan más parámetros (los cuales se pueden consultar en la documentación de add-product).
Esto solamente es ilustrativo, para poder indicarte que se pueden enviar más parámetros en las peticiones, y que hablando de forma general, lo más común que harás será enviar múltiples parámetros al estar consumiendo los servicios de del API web de AceptaBits.
Los parámetros que requiere cada servicio y/o sus valores así como el tipo de método HTTP que utilizan los podrás encontrar al explorar la documentación de cada uno de los servicios disponibles, puedes explorar la documentación completa ingresando en la sección: Lista de métodos API
Con esto damos por terminada la sección de Endpoints y Peticiones, recuerda que siempre podrás consultar la documentación de cada uno de los servicios disponibles y también tendrás a tu disposición la sección de ejemplo:
- Ingresa en este enlace para ver la Lista de métodos API que tenemos disponible.
- Ingresa en este enlace para ver la lista de Ejemplos que tenemos disponible.
Si tienes alguna duda recuerda que siempre puedes contactar con el equipo de soporte para desarrolladores ingresando en el siguiente enlace: Soporte para desarrolladores.