2012-06-15 12 views
9

A medida que obtengo más API RESTful, la (buena) simplicidad del enfoque significa que genera MUCHO código repetitivo y código que tiene que coincidir en tres o cuatro lugares diferentes, p. para una pila basada en Jersey:¿Hay alguna forma de generar código repetitivo para pilas RESTful?

  1. HTML en la página web que proporciona controles (un botón Create Foo)
  2. JS en la página web que formula el JSON y la solicitud de crear una Foo
  3. Un FooRest método de clase para manejar la petición y crear un Foo
  4. una clase Foo para crear una instancia, que será manipular la estructura de datos

¿existen instrumentos que PROV ¿Es un punto de partida para una parte o la totalidad de este código automáticamente, posiblemente a partir de algo sencillo como una estructura de datos JSON? Por ejemplo, establecen lo siguiente:

card: { 
    methods: [GET], 
} 
handOfCards: { 
    methods: [GET POST PUT DELETE], 
} 

y por lo menos terminar con las peticiones Ajax, clases y CardRest HandOfCardsRest con los métodos especificados apagó, y la tarjeta y HandOfCards clases con propiedades o getters/setters?

+0

Realmente espero que esto obtenga una buena respuesta. ¡Podría usar eso absolutamente! –

+0

@ W.Goeman, entonces es mejor compartir la respuesta para darle más visibilidad ... parece que las vistas se han estancado. –

Respuesta

1

creo que casi cualquier aplicación * carriles hace todo esto para tú. Grails es mi favorito en este momento, y una vez que se realiza la configuración inicial (un solo comando) se crean clases de dominio con otro comando.

Una vez creados, puede generar vistas (html) y controladores para manejar todas estas acciones con un solo comando, y la placa de la caldera es suficiente para muchos sitios iniciales.Incluso creará casos de prueba para usted, aunque deberá definir lo que hacen las pruebas reales. Puede programarlo por convención muy fácilmente, o crear sus propias asignaciones desde URLs -> acciones del controlador. Tiene un montón de soporte de complementos y maneja fácilmente el envío remoto de formularios (a través de javascript) integrado.

No se necesitan estructuras de datos json para la creación, pero los dominios se crean muy fácilmente (usando groovy) y autowires getter/setters, inyecciones de servicio, etc. ya que está basado en Spring Framework.

+0

Quería un poco más de control de lo que * los rieles me habían dado, pero supongo que esto es lo más cercano a la respuesta correcta. : - / –

0

Es posible que desee probar un enfoque diferente por completo y probar algo como project lombok. Por lo menos te permitirá eliminar a todos tus getters y setters.

+0

Eso es un comienzo, aunque en realidad mi IDE inserta automágicamente los getters/setters. Pero son todas las anotaciones y los métodos los que me irritan. Tal vez solo escriba un guión de perl. ;) –

+0

Esto realmente no responde la pregunta. Esto no tiene absolutamente nada que ver con REST, sea cual sea. –

3

¿Has probado Backbone.js? Es una biblioteca de JavaScript que maneja las solicitudes REST Ajax por usted. Le permite definir sus modelos para envolver los datos y proporciona setters, getters, guardar y eliminar funciones, etc.

También le permite vincular los modelos a vistas que generan el HTML de UI.

+0

Hmm, interesante. Definitivamente está a mitad de camino allí. Eso más un script de perl más pequeño podría funcionar. ;) –

+0

No había mirado realmente la red troncal antes, pero parece que sería una interfaz impresionante para un motor de Grails, que menciono en mi respuesta a continuación. – Mike

1

Su objetivo probablemente no debería ser la generación de código de texto repetitivo, pero en realidad escribir menos código.

Spark es un framework de Java web micro basado en Sinatra.

Aquí hay un código de ejemplo:

import static spark.Spark.*; 
import spark.*; 

public class HelloWorld { 
    public static void main(String[] args) { 
     get(new Route("/") { 
      @Override 
      public Object handle(Request request, Response response) { 
       // .. Show something .. 
      } 
     }); 

     post(new Route("/") { 
      @Override 
      public Object handle(Request request, Response response) { 
       // .. Create something .. 
      } 
     }); 

     put(new Route("/") { 
      @Override 
      public Object handle(Request request, Response response) { 
       // .. Update something .. 
      } 
     }); 

     delete(new Route("/") { 
      @Override 
      public Object handle(Request request, Response response) { 
       // .. annihilate something .. 
      } 
     }); 

     options(new Route("/") { 
      @Override 
      public Object handle(Request request, Response response) { 
       // .. appease something .. 
      } 
     }); 
    } 
} 
+0

¿Puede ayudarme a entender cómo esto ayuda a construir la parte frontal y posterior de un marco RESTful? Me falta algo ... –

+0

Simplifica un poco la parte de atrás. Rails es una solución simple y directa para su problema inmediato (por ejemplo, 'carriles generan andamios '), pero dijo que está usando Jersey actualmente, así que pensé que prefería una solución basada en Java. Después de haber usado Jersey, recomendaría de todo corazón algo así como Spark. –

1

Una alternativa (o además) a Juan's answer, es posible que desee comprobar hacia fuera Knockback.js, que toma lo mejor de golpe de gracia y se suma lo mejor de Backbone.js. Backbone tiene soporte para RESTful API a través de sus funciones de "sincronización". Citando su página web:

La firma del método de sincronización es Backbone.sync (método, modelo, [opciones])

method – the CRUD method ("create", "read", "update", or "delete") 
model – the model to be saved (or collection to be read) 
options – success and error callbacks, and all other jQuery request options 
Cuestiones relacionadas