Crear un webservice con API Rest de manera sencilla en php

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;
    }
 
?>

Deja un comentario