有没有办法为RESTful堆栈生成样板代码?

时间:2012-06-15 15:17:08

标签: java javascript rest auto-generate boilerplate

随着我对RESTful API的更多了解,该方法的(良好)简单性意味着您生成大量的样板代码,以及必须在三个或四个不同位置匹配的代码,例如:对于基于泽西岛的筹码:

  1. 网页上提供控件的HTML(按钮Create Foo
  2. 网页上的JS,它规定了JSON和创建Foo的请求
  3. 用于处理请求并创建Foo的FooRest类方法
  4. 要实例化的Foo类,它将操纵数据结构
  5. 是否有自动为某些或所有代码提供起点的工具,可能是从像JSON数据结构那样简单的东西开始的?例如,提供:

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

    并且至少最终得到Ajax请求,CardRest和HandOfCardsRest类使用指定的方法存根,而Card和HandOfCards类包含属性或getter / setter?

5 个答案:

答案 0 :(得分:3)

你试过Backbone.js吗?它是一个JavaScript库,可以为您处理REST Ajax请求。它允许您定义模型以包装数据并提供设置器,getter,保存和删除功能等。

它还允许您将模型绑定到生成UI HTML的视图。

答案 1 :(得分:1)

你的目标应该不是样板代码生成,而是实际编写更少的代码。

Spark是基于Sinatra的Java微型Web框架。

以下是一些示例代码:

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 ..
           }
        });
    }
}

答案 2 :(得分:1)

Juan's answer的备用(或添加),您可能需要查看Knockback.js,它会充分利用Knockout并添加Backbone.js的最佳效果。 Backbone通过它的“同步”功能支持RESTful API。引用他们的网站:

  

Backbone.sync的方法签名是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

答案 3 :(得分:1)

我认为几乎所有* rails应用程序都会为您完成所有这些操作。 Grails是我现在最喜欢的,一旦你完成了初始设置(一个命令),你就可以使用另一个命令创建域类。

创建这些视图后,您可以使用单个命令生成用于处理所有这些操作的视图(html)和控制器,并且锅炉板足以用于许多初始站点。它甚至会为您创建测试用例,但您需要定义实际测试的功能。您可以非常轻松地按惯例对其进行编程,或者从URL创建自己的映射 - >控制器动作。它有大量的插件支持,可以轻松处理内置的表单(通过javascript)的远程提交。

它没有用于创建的json数据结构,但是这些域非常容易创建(使用groovy)并且它自动装配getter / setter,服务注入等,因为它基于Spring Framework。

答案 4 :(得分:0)

您可能希望尝试不同的方法并尝试project lombok之类的内容。它至少会让你把所有的吸气剂和制定者都搞定。