Estarás cansado de leer términos como webservice, rest, api en millones de web, pues con esta entrada voy a explicar cómo crearlo de una mansera muy sencilla.
Primero de todo vamos a explicar los términos.
Webservice: Intercambiador de datos (aplicación que maneja los datos).
Api: Protocolo estandarizado utilizado para intercambiar los datos (get, delete,…).
Rest: Interfaz que utiliza HTTP para obtener los datos (xml, json,…).
Una vez explicado vamos a proceder a crear el webservice.
Para el ejemplo voy a crear un webservice que nos diga el índice de masa corporal (formula peso(kg)/talla(m2)).
Lo primero que haremos es definir con header el tipo del documento (JSON).
header("Content-Type:application/json");
A continuación con get recojeremos las variables GET pasadas al navegador web.
$nombre = $_GET['nombre'];
$peso = $_GET['peso'];
$estatura = $_GET['estatura'];
Pasamos la lógica al webservice (formula IMC).
// convertimos cm en m
$estatura = $estatura / 100;
//formula peso(kg)/talla(m2)
$imc = $peso / ($estatura * $estatura);
//redondeamos a dos decimales
$imc = round($imc, 2);
Y pasamos el resultado a la funcion que devolvera el JSON.
respuesta_entregada(200, "$nombre tu IMC es de $imc", $imc);
Y lo ultimo que haremos es crear la funcion que creara el JSON.
function respuesta_entregada($estado, $mensaje_estado, $datos)
{
//cabecera respuesta
header("HTTP/1.1 $estado $mensaje_estado");
//rellenamos array con estado, mensaje y datos
$respuesta['estado'] = $estado;
$respuesta['mensaje_estado'] = $mensaje_estado;
$respuesta['datos'] = $datos;
//codificamos el json
$respuesta_json = json_encode($respuesta);
//pintamos el contenido del json
echo $respuesta_json;
}
Ahora para probarlo lo que haremos es pasar los parámetros al navegador web y ver la respuesta entregada.
Ej. http://localhost/webservice/webservice.php?nombre=Pepe&peso=75&estatura=183
Código del ejemplo.
<?php
// ej: http://localhost/webservice/webservice.php?nombre=Pepe&peso=75&estatura=183
//definimos con header el tipo del documento (JSON)
header("Content-Type:application/json");
//recojemos variables
$nombre = $_GET['nombre'];
$peso = $_GET['peso'];
$estatura = $_GET['estatura'];
//validamos varaiables vacias
if(!empty($nombre) && !empty($peso) && !empty($estatura))
{
// convertimos cm en m
$estatura = $estatura / 100;
//formula peso(kg)/talla(m2)
$imc = $peso / ($estatura * $estatura);
//redondeamos a dos decimales
$imc = round($imc, 2);
//entregamos respuesta
respuesta_entregada(200, "$nombre tu IMC es de $imc", $imc);
}
else
{
//entregamos respuesta
deliver_response(200, "nombre, peso o estatura no validos", null);
}
//funcion que crea la respuesta, con estado, mensaje de estados y datos
function respuesta_entregada($estado, $mensaje_estado, $datos)
{
//cabecera respuesta
header("HTTP/1.1 $estado $mensaje_estado");
//rellenamos array con estado, mensaje y datos
$respuesta['estado'] = $estado;
$respuesta['mensaje_estado'] = $mensaje_estado;
$respuesta['datos'] = $datos;
//codificamos el json
$respuesta_json = json_encode($respuesta);
//pintamos el contenido del json
echo $respuesta_json;
}
?>
En tu ejemplo no defines la función deliver_response que utilizas para indicar que los datos no son válidos.
Facilicimo de entender.
Muchas gracias por el aporte, nos sirvio de mucho.
Saludos.