Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 使用休息和脚手架动作_Grails - Fatal编程技术网

Grails 使用休息和脚手架动作

Grails 使用休息和脚手架动作,grails,Grails,我看到Grails2.3在脚手架中使用REST进行CRUD操作。虽然这是了解REST如何工作的好方法,但我想知道使用REST在单个应用程序堆栈内进行通信是否非常有效。它不是将请求一直发送到网络层,然后再返回,而不是直接从应用服务器发送到数据库吗?我想象的是一个“pop fly”,而不是一个“line drive”。我是否误解了它的工作原理?当你说“在scaffolding中为CRUD操作使用REST”时,我假设你指的是基本的scaffolding(即生成所有示例.Book)。脚手架控制器未调用R

我看到Grails2.3在脚手架中使用REST进行CRUD操作。虽然这是了解REST如何工作的好方法,但我想知道使用REST在单个应用程序堆栈内进行通信是否非常有效。它不是将请求一直发送到网络层,然后再返回,而不是直接从应用服务器发送到数据库吗?我想象的是一个“pop fly”,而不是一个“line drive”。我是否误解了它的工作原理?

当你说“在scaffolding中为CRUD操作使用REST”时,我假设你指的是基本的scaffolding(即
生成所有示例.Book
)。脚手架控制器未调用REST API(
https://yourapp/book.json
)要检索数据,他们仍然使用GORM访问数据库,然后使用
Respond
方法根据请求的内容类型(XML、JSON、HTML)以适当的格式呈现数据。所以

典型的请求-响应周期
  • 客户端(通常是HTML页面)发出请求(GET
    http://yourapp/books/1
  • Grails“解析”请求参数(
    id:1
  • Grails的GORM从数据库检索数据并创建对象实例
  • Grails将响应内容类型解析为HTML
  • Grails使用views目录中的视图通过HTML响应“响应”请求
  • SPA/API调用
  • 客户端(通常是javascript)发出请求(GET
    http://yourapp/books/1.json
    **)
  • Grails“解析”请求参数(
    id:1
  • Grails的GORM从数据库检索数据并创建对象实例
  • Grails将响应内容类型解析为JSON
  • Grails使用JSON响应“响应”请求
  • 客户端使用JSON响应并相应地执行操作
  • **可以通过多种方式指定内容类型,只需使用.json后缀,因为它是最透明的。看


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

    公开的REST方法供其他客户端使用,而不是供同一Grails应用程序(服务器端)内部使用。因此,您可以通过AJAX或其他应用程序(例如,仅限客户端的Web应用程序)从浏览器客户端调用它们。。。