2012-06-15 6 views
9

RESTfulなAPIが増えるにつれて、アプローチの簡潔さは、多くの定型的なコードを生成し、3つまたは4つの異なる場所で一致させるコードを作成することを意味します。ジャージーベースのスタックのために:JSONと要求を策定したWebページ上のRESTfulスタック用の定型コードを生成する方法はありますか?

  1. HTMLコントロールを提供するWebページ上の(ボタンCreate Foo
  2. JSはFoo
  3. を作成する
  4. FooRestリクエストを処理し、データ構造

を操作するインスタンス化するためのFoo

  • Fooクラスを作成するクラスメソッドどのプロブのツールがありますideこのコードの一部または全部の開始点、自動的にJSONデータ構造のような簡単なものから始めることができますか?例えば、提供:

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

    と非常に少なくとも、Ajaxリクエストで終わるを、指定した方法でCardRestとHandOfCardsRestクラスは、スタブアウト、およびプロパティやゲッター/セッターを持つカードとHandOfCardsクラス?

  • +0

    これは良い答えが得られることを本当に願っています。私は絶対にそれを使うことができました! –

    +0

    @ W.Goeman、それでもっと分かりやすくするために答えを分かち合うのが最善です...それは見えなくなったようです。 –

    答えて

    1

    である私は、ほぼすべての* Railsアプリケーションはこのすべてを行いだと思います君は。 Grailsは私のお気に入りです。最初の設定が完了すると(1つのコマンド)、別のコマンドでドメインクラスを作成します。

    これらを作成したら、単一のコマンドでこれらのアクションをすべて処理するビュー(html)とコントローラを生成することができます。ボイラプレートは多くの初期サイトで十分です。実際のテストの内容を定義する必要がありますが、テストケースを作成することさえあります。あなたは非常に簡単にそれをプログラムすることができますし、URL - >コントローラのアクションから独自のマッピングを作成することもできます。

    jsonのデータ構造は作成されませんが、ドメインは非常に簡単に(groovyを使用して)作成され、それは簡単に作成できます。 Spring Frameworkに基づいているので、getter/setter、サービスインジェクションなどをautowiresします。

    +0

    私はレールが私に与えたよりも少しだけコントロールしたかったが、これはまだ正しい答えに最も近いと思う。 : - / –

    0

    別の方法を試してみて、project lombokのようなものを試してみてください。それは少なくとも、あなたのゲッターとセッターをすべて怒らせるでしょう。

    +0

    これはスタートですが、実際には私のIDEはゲッター/セッターを自動的に挿入します。しかし、それはすべて私を怒らせている注釈と方法です。たぶん、私はちょうどperlスクリプトを書くでしょう。 ;) –

    +0

    これは本当に質問に答えません。これはまったくRESTとは何の関係もありません。 –

    3

    Backbone.jsを試しましたか?これは、REST Ajaxリクエストを処理するJavaScriptライブラリです。モデルを定義してセッター、ゲッター、保存したり削除する機能などを提供します。

    また、UI HTMLを生成するビューにモデルをバインドすることもできます。

    +0

    うーん、興味深い。それは間違いなく途中です。それに加えて、より小さなperlスクリプトがうまくいくかもしれません。 ;) –

    +0

    以前はバックボーンを見ていませんでしたが、これはgrailsバックエンドにとって素晴らしいフロントエンドになると思われます。 – Mike

    1

    あなたの目標は、おそらく、定型文のコード生成ではなく、実際には少ないコードを書くことです。

    Sparkは、Sinatraに基づくJavaマイクロウェブフレームワークです。

    は、ここではいくつかのサンプルコードです:

    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

    これがRESTfulフレームワークのフロントエンドとバックエンドの構築にどのように役立つのか理解できますか?私は何かを逃している... –

    +0

    それはかなりバックエンドを簡素化します。 Railsはあなたの直面する問題(例えば 'rails generate scaffold')のためのシンプルで直接的な解決策ですが、あなたはJerseyを現在使っていると言っていますので、Javaベースのソリューションを好むかもしれません。ジャージーを使用していたので、スパークのようなものを全面的にお勧めします。 –

    1

    代替(または追加)Juan's answerに、あなたはノックアウトの最高とり、Backbone.jsの最良の追加Knockback.jsを、チェックアウトする場合があります。バックボーンは、 "同期"機能を介してRESTful APIをサポートしています。彼らのウェブサイトを引用:

    Backbone.syncのメソッドシグネチャが同期(メソッド、モデル、 [オプション])

    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 
    
    関連する問題