Hola,
Tengo una duda que está creciendo como una bola de nieve...
Para un proyecto busqué información para hacer un webservice para actualizar datos de una aplicación en Android, miré de hacerlo con SOAP pero no lo conseguí hacer funcionar, y seguí buscando y vi una forma de hacerlo muy sencilla. Pero realmente no sé si es parecido a REST o RPC...
El ejemplo que utilicé es el de la siguiente página
http://www.androidhive.info/2012/01/...ql-and-sqlite.
Cuento por encima, se tiene un archivo index.php donde se hace un GET o POST para obtener o modificar parte de la base de datos. Según el un tag que le pasemos llamamos a una función en otro archivo PHP que devuelve un JSON que es lo que recibe la aplicación ANDROID.
Código de ejemplo:
Código:
<?php
/**
* File to handle all API requests
* Accepts GET and POST
*
* Each request will be identified by TAG
* Response will be JSON data
/**
* check for POST request
*/
if (isset($_POST['tag']) && $_POST['tag'] != '') {
// get tag
$tag = $_POST['tag'];
// include db handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// response Array
$response = array("tag" => $tag, "success" => 0, "error" => 0);
// check for tag type
if ($tag == 'login') {
// Request type is check Login
$email = $_POST['email'];
$password = $_POST['password'];
// check for user
$user = $db->getUserByEmailAndPassword($email, $password);
if ($user != false) {
// user found
// echo json with success = 1
$response["success"] = 1;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["email"] = $user["email"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user not found
// echo json with error = 1
$response["error"] = 1;
$response["error_msg"] = "Incorrect email or password!";
echo json_encode($response);
}
} else if ($tag == 'register') {
// Request type is Register new user
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
// check if user is already existed
if ($db->isUserExisted($email)) {
// user is already existed - error response
$response["error"] = 2;
$response["error_msg"] = "User already existed";
echo json_encode($response);
} else {
// store user
$user = $db->storeUser($name, $email, $password);
if ($user) {
// user stored successfully
$response["success"] = 1;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["email"] = $user["email"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user failed to store
$response["error"] = 1;
$response["error_msg"] = "Error occured in Registartion";
echo json_encode($response);
}
}
} else {
echo "Invalid Request";
}
} else {
echo "Access Denied";
}
?>
.
Si en una entrevista de trabajo me preguntan que he hecho, que es lo que he hecho? eso REST no es, porque para cada elemento hay una URI que lo identifica (tengo que documentarme más al respecto porque no lo acabo de entender), y RPC si que se supone que se llama a diferentes métodos. Lo que normalmente digo es describir lo que hice, un php para recibir solicitudes, otro para realizar los métodos y la contestación en JSON. ¿Tiene un nombre más técnico?
Gracias a quien me pueda ayudar