REST与脚手架操作的使用

时间:2014-01-30 23:08:27

标签: grails

我看到Grails 2.3在脚手架中使用REST进行CRUD操作。虽然这是了解REST如何工作的好方法,但我想知道使用REST在单个应用程序堆栈内部进行通信是非常有效的。它是不是将请求一直发送到网络层并再次退回而不是直接从应用服务器发送到数据库?我正在想象一个“流行音乐”,而不是“行车”。我误解了它是如何工作的吗?

1 个答案:

答案 0 :(得分:0)

我假设当你说,"使用REST作为脚手架中的CRUD动作"你指的是基本的脚手架(即generate-all example.Book)。脚手架控制器不调用REST API(https://yourapp/book.json)来检索数据,他们仍然使用GORM访问数据库,然后使用Respond方法以适当的格式呈现数据请求的内容类型(XML,JSON,HTML)。所以,

典型的请求 - 响应周期

  1. 客户端(通常是HTML页面)发出请求(GET http://yourapp/books/1
  2. Grails'解析'请求参数(id: 1
  3. 的Grails' GORM从数据库中检索数据并创建对象实例
  4. Grails将响应内容类型解析为HTML
  5. Grails"回应"使用视图目录中的视图使用HTML响应的请求
  6. SPA / API调用

    1. 客户端,通常是javascript,发出请求(GET http://yourapp/books/1.json **)
    2. Grails'解析'请求参数(id: 1
    3. 的Grails' GORM从数据库中检索数据并创建对象实例
    4. Grails将响应内容类型解析为JSON
    5. Grails"回应"使用JSON响应的请求
    6. 客户端使用JSON响应并采取相应措施
    7. ** content-type可以通过多种方式指定,只使用.json后缀,因为它是最透明的。请参阅http://grails.org/doc/2.3.x/guide/single.html#contentNegotiation

      并回答你关于它是否非常有效的问题"。我认为它几乎总是肯定的,因为你的有效载荷往往要小得多,因为你只传输数据,而不是数据+格式(HTML,javascript,css等)。它还提供了一种分离关注点的方法,允许客户端专注于状态和表示,后端则专注于数据。此外,这意味着您可以使用相同的后端API创建多个客户端(基于移动,基于桌面,基于Web)。