|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Servicios Web (concepto)
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 ![]()
__________________
Visitar mi blog sobre ANDROID.
bamboo5.blogspot.com Buscar en GOOGLE PLAY mis apps gratuitas LENTILLAS WIDGET, EATTOOL y TRIPTOOL COACHMANAGER para gestión de entrenadores. |
|
#2
|
||||
|
||||
REST no es ninguna tecnología, es más una filosofía de no usar protocolos extra y reutilizar las capacidades de HTTP. Que la acción vaya en la URL o en una variable del POST da igual, sigue siendo REST en la medida de que no usas protocolos/encapsulamientos adicionales (SOAP, XML-RPC, etc.)
Y con "servicio web" pasa lo mismo, cualquier cosa que hagas en Internet y tenga un API es un servicio web.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#3
|
||||
|
||||
entonces, corrígeme si me equivoco. yo realmente utilicé la filosofía REST?
Estaba mirando ahora y otro tutorial que he encontrado de otra página utilizan para crear servicios web basándose en la filosofía REST el framework ASP.NET MVC 3. que ayuda en el tema del direccionamiento de los recursos... pero lo veo un poco complicado. Yo como lo hice del ejemplo que pongo de PHP lo hice muy sencillo y rápido. ¿Es mejor lo del direccionamiento que he leído en algunos lados para tener acceso a cada uno de los recursos (entidades)? ¿O está bien como lo hice yo que era a través de un archivo php que según los parámetros que recibía invocaba a un método u otro para obtener/modificar información? De todas formas haré el tutorial del ejemplo que encontré de REST a ver si lo entiendo mejor y veo realmente la utilidad de hacerlo como lo pone en el ejemplo, o si es mejor hacerlo como lo hice yo con PHP.
__________________
Visitar mi blog sobre ANDROID.
bamboo5.blogspot.com Buscar en GOOGLE PLAY mis apps gratuitas LENTILLAS WIDGET, EATTOOL y TRIPTOOL COACHMANAGER para gestión de entrenadores. |
#4
|
||||
|
||||
En el momento en que decidiste no complicarte la vida con otro protocolo (SOAP) y decidiste utilizar HTTP directamente pasando atributos, eso es REST.
El patrón modelo-vista-controlador es básico en servicios web, y si quieres una arquitectura fácilmente ampliable y gestionable es el camino a seguir. Tampoco hay que perder el horizonte, si tu script php tiene 20 líneas de código no tiene sentido liarse a separar cosas... Pero si crece, y empiezas a meter ifs y a hacer copy-paste del código, verás cómo te pide algo más modular como el mecanismo de redirección.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
Gracias de parte de: | ||
#5
|
||||
|
||||
muchisimas gracias por la explicación, me has ayudado mucho
![]()
__________________
Visitar mi blog sobre ANDROID.
bamboo5.blogspot.com Buscar en GOOGLE PLAY mis apps gratuitas LENTILLAS WIDGET, EATTOOL y TRIPTOOL COACHMANAGER para gestión de entrenadores. |
![]() |
![]() |
||||||
|