ccc

Web Services REST

REST lo hace todo con file_get_contents

En el servidor creamos el fichero api.php:
<?php
// ********************************
function alta_nuevo_actor($nombre, $anno_oscar, $pelicula) {
    // Aquí se hará las SQL para insertarlo en la BD
    return "Insertando en la BD:".$nombre.",".$anno_oscar.",".$pelicula;
}

// ********************************
function get_datos_actor($id){
    $arrActores = array();
     // Los datos normalmente se sacaran de la BD
    switch($id){
        case 1:
            $arrActores = array("nombre" => "Humphrey Bogart", "anno_oscar" => "1951", "pelicula" => "La reina de Africa");
            break;
        case 2:
            $arrActores = array("nombre" => "Gary Cooper", "anno_oscar" => "1952", "pelicula" => "Solo ante el peligro");
            break;
        case 3:
            $arrActores = array("nombre" => "William Holden", "anno_oscar" => "1953", "pelicula" => "Traidor en el infierno");
            break;
   }
   return $arrActores;
}

// ********************************
function get_listado_actores() {
    // Los datos normalmente se sacaran de la BD
    $arrActores = array(array("id" => 1, "nombre" => "Humphrey Bogart"),
                          array("id" => 2, "nombre" => "Gary Cooper"),
                          array("id" => 3, "nombre" => "William Holden"));
   
    return $arrActores;
}

// *** PRINCIPAL
if(isset($_GET["accion"])){ // Siempre debe existir
    switch($_GET["accion"]){
        case "alta_nuevo_actor":
            $value = alta_nuevo_actor($_GET["nombre"], $_GET["anno_oscar"], $_GET["pelicula"]);
            break;
        case "get_listado_actores":
            $value = get_listado_actores();
            break;
         case "get_datos_actor":
            $value = get_datos_actor($_GET["id"]);
            break;
    }
}
exit(json_encode($value)); // tiene que ser exit, no echo
?> 


En el cliente creamos el fichero rest_client.php 

<html>
<body>
<?php
if(isset($_GET["accion"]) == "get_datos_actor"){
    $datos_actor = file_get_contents('http://www.dominio1.com/REST/api.php?accion=get_datos_actor&id='.$_GET["id"]);
    $datos_actor = json_decode($datos_actor, true);
    ?>
    Nombre: <?=$datos_actor["nombre"] ?><br />
    Año del Oscar: <?=$datos_actor["anno_oscar"] ?><br />
    Película: <?=$datos_actor["pelicula"] ?><br />
    <?php
}
else {
    $list_actores = file_get_contents('http://www.dominio1.com/REST/api.php?accion=get_listado_actores');
    // print_r($list_actores);exit;
    $list_actores = json_decode($list_actores, true);
    foreach($list_actores as $actor) { ?>
        <a href="rest_client.php?accion=get_datos_actor&id=<?=$actor["id"];?>"><?=$actor["nombre"];?></a><br>
    <?php
    }
 }
 ?>
 <hr>
  <form method="post" action="alta_nuevo_actor.php">
     <b>Dar de alta un nuevo actor</b><br>
     Nombre: <input type="text" name="nombre"><br>
     Año Oscar: <input type="text" name="anno_oscar"><br>
     Película: <input type="text" name="pelicula"><br>
     <input type="submit" value="Dar de alta">
 </form>
 <hr>
 <a href="rest_client.php">Volver al listado</a>
</body>
</html> 


En el cliente creamos el fichero alta_nuevo_actor.php

<?php
    $cadena = 'http://www.dominio1.com/REST/api.php?accion=alta_nuevo_actor&nombre='.$_POST["nombre"].'&anno_oscar='.$_POST["nombre"].'&pelicula='.$_POST["pelicula"];
    $resultado = file_get_contents($cadena);
    echo $cadena."<hr>";
    echo($resultado);
?>

No hay comentarios:

Publicar un comentario