2012-06-15 14 views
9

Come ottengo di più in API RESTful, la (buona) semplicità dell'approccio significa che si genera un LOT di codice boilerplate e codice che deve corrispondere in tre o quattro diversi posti, ad es. per una pila di Jersey-based:Esiste un modo per generare codice di codice per gli stack RESTful?

  1. HTML della pagina web che fornisce i controlli (un pulsante Create Foo)
  2. JS sulla pagina web che formula il JSON e la richiesta di creare un Foo
  3. A FooRest metodo di classe per gestire la richiesta e creare un Foo
  4. una classe Foo per istanziare, che manipolare la struttura dei dati

ci sono strumenti che PROV ide un punto di partenza per alcuni o tutti questi codici automaticamente, possibilmente partendo da qualcosa di semplice come una struttura di dati JSON? Per esempio, forniscono:

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

e per lo meno finire con le richieste Ajax, classi CardRest e HandOfCardsRest con i metodi specificati spense, e carta e HandOfCards classi con proprietà o getter/setter?

+0

Spero davvero che questa sia una buona risposta. Potrei assolutamente usarlo! –

+0

@ W.Goeman, quindi meglio condividere la risposta per dare più visibilità ... sembra che le visualizzazioni si siano bloccate. –

risposta

1

penso che quasi tutte le applicazioni * rotaie fa tutto questo per tu. Grails è il mio preferito in questo momento e, una volta completata la configurazione iniziale (un singolo comando), si creano classi di dominio con un altro comando.

Una volta creati, è possibile generare sia viste (html) che controller per gestire tutte queste azioni con un singolo comando e la piastra della caldaia è sufficiente per molti siti iniziali.Creerà anche casi di test per te, anche se dovrai definire quali sono i test effettivi. Puoi programmarlo per convenzione molto facilmente o creare i tuoi mapping da URL -> azioni del controller. Ha un sacco di supporto per i plugin e gestisce facilmente l'invio remoto di moduli (tramite javascript) integrato.

Non ci vuole una struttura dati json per la creazione, ma i domini sono creati molto facilmente (usando groovy) e autowires getter/setters, iniezioni di servizio, ecc. in quanto basato sul framework Spring.

+0

Volevo un controllo leggermente maggiore di quello che mi aveva dato * le rotaie, ma immagino che sia ancora più vicino alla risposta giusta. : - / –

0

Si potrebbe voler provare un approccio diverso del tutto e provare qualcosa come project lombok. Permetterà almeno di bloccare tutti i tuoi getter e setter.

+0

Questo è un inizio, anche se in realtà il mio IDE inserisce automaticamente i getter/setter. Ma sono tutte le annotazioni e i metodi che mi irritano. Forse scriverò solo uno script perl. ;) –

+0

Questo in realtà non risponde alla domanda. Questo non ha assolutamente nulla a che fare con REST, qualunque cosa. –

3

Hai provato Backbone.js? È una libreria JavaScript che gestisce le richieste Ajax di REST per te. Consente di definire i modelli per avvolgere i dati e fornisce setter, getter, funzioni di salvataggio ed eliminazione, ecc.

Consente inoltre di associare i modelli alle viste che generano l'UI HTML.

+0

Hmm, interessante. È decisamente a metà strada lì. Questo oltre a uno script perl più piccolo potrebbe funzionare. ;) –

+0

Non avevo davvero guardato la spina dorsale prima, ma sembra che questo sarebbe un ottimo frontend per un backend di graal, che cito nella mia risposta qui sotto. – Mike

1

Probabilmente il tuo obiettivo non dovrebbe essere la generazione di codice di boilerplate ma in realtà scrivere meno codice.

Spark è un framework Web micro Java basato su Sinatra.

Ecco qualche esempio di codice:

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

Puoi aiutarmi a capire in che modo questo aiuta a costruire le estremità anteriore e posteriore di un framework RESTful? Mi manca qualcosa ... –

+0

Semplifica abbastanza il back end. Rails è una soluzione semplice e diretta per il tuo problema immediato (ad esempio, 'rails genera scaffold'), ma hai detto che stai usando Jersey attualmente, quindi ho pensato che potessi preferire una soluzione basata su Java. Avendo usato Jersey, consiglierei senza riserve qualcosa come Spark. –

1

Un supplente (o oltre) per Juan's answer, si potrebbe voler controllare Knockback.js, che prende il meglio di Knockout e aggiunge il meglio di Backbone.js. Backbone supporta le API RESTful tramite le sue funzioni di "sincronizzazione". Citando il loro sito web:

La firma di metodo di Backbone.sync è sync (metodo, il modello, [opzioni])

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