2011-09-06 28 views
7

Soy un novato en GAE, JSON, REST y la web en general. Tengo un datastore GWT/GAE muy simple que me gustaría usar para actualizar datos en una aplicación de Android que escribí. Después de algunas investigaciones, parece que una buena forma de hacerlo es crear un servicio web RESTful al que accederá mi aplicación Android a través de una solicitud HTTP que envía datos formateados JSON.Servidor GAE Java JSON REST simple

He estado buscando una manera de hacer esto y parece haber muchas formas, la mayoría usando bibliotecas de terceros. Hay tantos, es difícil elegir sabiamente como un principiante. Además, mi problema es tan simple que esta sería una buena oportunidad para aprender los conceptos básicos de la creación de un servicio web RESTful y JSON en GAE. Todo lo que necesita hacer es devolver datos JSON desde una URL, sin crear, sin actualizaciones, sin eliminar.

Imagino que un ejemplo simple o tutorial de código Java tendría más sentido para lograr mi objetivo que aprender una biblioteca complicada. ¿Alguien sabe de un simple ejemplo o tutorial para enviarme en la dirección correcta?

Gracias.

Sin Snark favor

== Actualización:

En el doGet @ Override de GreetingServiceImpl que viene del asistente, que ha añadido:

// super.doGet(req, resp); 
PrintWriter out = resp.getWriter(); 
out.println("Hello World"); 

Esto parece funcionar. ¿Podría ser así de simple? ¿Puedo modificar este código para generar mi salida JSON en lugar de la cadena "Hello World" y listo?

Respuesta

3

Usted es cuestión es una especie de general (sin snark previsto) así que mi respuesta es en general demasiado. Aunque mi respuesta es general, la información debería orientarlo en la dirección correcta. Si su pregunta se vuelve más específica, edite su pregunta original o pregunte a otra si es lo suficientemente específica.

Diría que la manera más fácil de hacer esto sería obtener Eclipse y usar el plugin GAE Eclipse (si no lo ha hecho).

Siga las instrucciones aquí para instalar, crear y ejecutar un proyecto:

http://code.google.com/appengine/docs/java/tools/eclipse.html

Una vez hecho todo esto, en el servlet, reescribir el método doGet utilizar cualquier código que tiene para golpear su almacén de datos. Una vez que tenga el código que desea para obtener su objeto de su almacén de datos, serializaría los objetos resultantes a JSON utilizando GSON. http://code.google.com/p/google-gson/

De nuevo, esta no es toda la información que va a necesitar. Siéntase libre de editar su pregunta o comentario y solicitar información más específica. Además, mencionaste que has estado buscando otras bibliotecas de terceros para hacer esto también. Ten cuidado aquí. Debe tener en cuenta que si usa el motor de la aplicación de Google, es posible que algo que funcione localmente no funcione cuando lo implemente. Esto es una especie de inconveniente, pero es parte de lo que permite a Google simplificar el motor de la aplicación y ofrecer tanto hosting de forma gratuita como lo hace. Hay una lista de bibliotecas de terceros que han sido probadas en batalla en el entorno del motor de aplicaciones para Java; pero no pude encontrarlo con una búsqueda de google superficial. Aunque sé que está en algún lugar de los documentos del motor de la aplicación. Y, por lo que vale, hice una pequeña prueba de humo de GSON en el motor de la aplicación y parecía funcionar bien.

+0

Gracias. He estado usando Eclipse. En el código generado por el asistente, veo: public class GreetingServiceImpl extiende RemoteServiceServlet implementa GreetingService {@ Override protected void doGet (HttpServletRequest req, HttpServletResponse respectivamente) lanza ServletException, IOException { ... ¿Es esto lo que quiere decir con "reescritura DoGet "? – Mitch

+0

Agregué // super.doGet (req, resp); \t \t PrintWriter out = resp.getWriter(); \t \t out.println ("Hello World"); – Mitch

+0

Sí, mi pregunta es general de alguna manera, pero muy específica en otras. Estoy buscando un ejemplo o tutorial, que es muy específico. Sin embargo, es general que también se agradece hacer una sugerencia sobre lo que funcionaría. – Mitch

2

Pruebe usar JSONEngine: esta biblioteca crea API JSON de fácil acceso para almacenar/recuperar/actualizar/eliminar datos JSON en Google App Engine. El acceso a cada documento JSON se puede establecer en ID de usuario/ID de correo electrónico de Google únicamente/ID de correo electrónico de identificación abierta solamente (como Google/Yahoo/AOL) ...

Más información sobre esta biblioteca en code.google.com/p/jsonengine/

0

Pruebe el nuevo Google Cloud Endpoints. Todavía son experimentales, pero por lo que he intentado, funcionan perfectamente.

Además, son extremadamente fáciles de usar para propósitos simples como usted define. Si está utilizando Google Eclipse Plugin, solo tiene que crear una clase persistente JDO y el plugin genera el endpoint automáticamente. Consulte el complemento Google Eclipse Plugin para Google CLoud Endpoints here.