2012-06-15 14 views
9

Wenn ich mehr auf RESTful-APIs zugreife, bedeutet die (gute) Einfachheit des Ansatzes, dass Sie eine Menge Standardcode und Code generieren, der an drei oder vier verschiedenen Stellen übereinstimmen muss, z. für eine Jersey-basierten Stapel:Gibt es eine Möglichkeit, Standardcode für RESTful-Stacks zu generieren?

  1. HTML auf der Webseite, die Kontrollen (eine Taste Create Foo)
  2. JS auf der Web-Seite, die die JSON und die Anforderung eine Foo
  3. A zu schaffen formuliert bietet FooRest Klassenmethode die Anfrage bearbeiten und eine Foo
  4. A Foo Klasse erstellen zu instanziiert, die die Datenstruktur manipulieren

gibt es Werkzeuge, die prov Idealer Ausgangspunkt für einige oder alle dieser Codes automatisch, möglicherweise ausgehend von etwas einfach wie eine JSON-Datenstruktur? Beispiel liefern:

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

und zumindest mit Ajax-Anfragen am Ende, CardRest und HandOfCardsRest Klassen mit den angegebenen Methoden stubbed aus, und Card und HandOfCards Klassen mit Eigenschaften oder Getter/Setter?

+0

Ich hoffe wirklich, dass dies eine gute Antwort bekommt. Das könnte ich absolut gebrauchen! –

+0

@ W.Goeman, dann am besten, um die Antwort zu teilen, um es mehr Sichtbarkeit zu geben ... es sieht so aus, als ob Ansichten blockiert wurden. –

Antwort

1

denke ich fast jede * Rails-Anwendung all dies tut für Sie. Grails ist mein Favorit im Moment, und sobald Sie die Erstinstallation (ein einzelner Befehl) abgeschlossen haben, erstellen Sie Domänenklassen mit einem anderen Befehl.

Sobald diese erstellt sind, können Sie beide Ansichten (HTML) und Controller für die Behandlung all dieser Aktionen mit einem einzigen Befehl generieren, und die Kesselplatte ist ausreichend für viele anfängliche Standorte.Es erstellt sogar Testfälle für Sie, obwohl Sie definieren müssen, was die eigentlichen Tests tun. Sie können es sehr einfach per Konvention programmieren oder eigene Mappings aus URLs -> Controller-Aktionen erstellen. Es hat eine Tonne von Plugin-Unterstützung und einfach Remote-Einreichung von Formularen (via Javascript) eingebaut.

Es dauert nicht ein JSON Datenstrukturen für die Erstellung, aber die Domänen sind sehr einfach erstellt (mit groovy) und es Autowire Getter/Setter, Service-Injektionen, etc., da es auf dem Spring Framework basiert.

+0

Ich wollte etwas mehr Kontrolle als * Rails hatte mir gegeben, aber ich denke, das ist immer noch am nächsten an der richtigen Antwort. : - / –

0

Sie können einen anderen Ansatz insgesamt versuchen und versuchen etwas wie project lombok. Es wird euch zumindest erlauben, alle eure Getter und Setter zu nixen.

+0

Das ist ein Anfang, obwohl meine IDE automatisch die Getter/Setter einfügt. Aber es sind all die Anmerkungen und Methoden, die mich ärgern. Vielleicht schreibe ich einfach ein Perl-Skript. ;) –

+0

Das beantwortet die Frage nicht wirklich. Das hat mit REST absolut nichts zu tun. –

3

Haben Sie versucht Backbone.js? Es ist eine JavaScript-Bibliothek, die REST-Ajax-Anfragen für Sie bearbeitet. Es ermöglicht Ihnen, Ihre Modelle zu definieren, um die Daten zu umhüllen und bietet Setter, Getter, speichern und löschen, etc.

Es ermöglicht Ihnen auch, die Modelle an Ansichten zu binden, die die UI HTML generieren.

+0

Hmm, interessant. Es ist definitiv auf halbem Weg. Das plus ein kleineres Perl-Skript könnte funktionieren. ;) –

+0

Ich hatte das Backbone vorher nicht wirklich angeschaut, aber es scheint, dass dies ein fantastisches Frontend für ein Backend von Grails wäre, was ich in meiner Antwort unten erwähne. – Mike

1

Ihr Ziel sollte wahrscheinlich nicht Codegenerierung von Boilerplate sein, sondern tatsächlich weniger Code schreiben.

Spark ist ein Java-Mikro-Web-Framework basierend auf Sinatra.

Hier einige Beispiel-Code:

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

Können Sie mir helfen zu verstehen, wie dies dazu beiträgt, die Vorder- und Rückseite eines RESTful-Frameworks zu erstellen? Ich vermisse etwas ... –

+0

Es vereinfacht das Back-End ziemlich viel. Rails ist eine einfache und direkte Lösung für Ihr unmittelbares Problem (z. B. "Rails generieren Scaffold"), aber Sie sagten, dass Sie Jersey derzeit verwenden, also dachte ich, dass Sie vielleicht eine Java-basierte Lösung bevorzugen. Nachdem ich Jersey benutzt habe, würde ich von ganzem Herzen etwas wie Spark darüber empfehlen. –

1

Eine alternative (oder zusätzlich) zu Juan's answer, möchten Sie vielleicht Knockback.js überprüfen, die das Beste aus Knockout nimmt und fügt das Beste aus Backbone.js. Backbone unterstützt RESTful APIs über seine "Sync" -Funktionen. Zitiert von ihrer Website:

Die Methodensignatur von Backbone.sync ist sync (Methode, Modell, [Optionen])

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 
Verwandte Themen