我看到Grails 2.3在脚手架中使用REST进行CRUD操作。虽然这是了解REST如何工作的好方法,但我想知道使用REST在单个应用程序堆栈内部进行通信是非常有效的。它是不是将请求一直发送到网络层并再次退回而不是直接从应用服务器发送到数据库?我正在想象一个“流行音乐”,而不是“行车”。我误解了它是如何工作的吗?
答案 0 :(得分:0)
我假设当你说,"使用REST作为脚手架中的CRUD动作"你指的是基本的脚手架(即generate-all example.Book
)。脚手架控制器不调用REST API(https://yourapp/book.json
)来检索数据,他们仍然使用GORM访问数据库,然后使用Respond
方法以适当的格式呈现数据请求的内容类型(XML,JSON,HTML)。所以,
http://yourapp/books/1
)id: 1
)http://yourapp/books/1.json
**)id: 1
)** content-type可以通过多种方式指定,只使用.json后缀,因为它是最透明的。请参阅http://grails.org/doc/2.3.x/guide/single.html#contentNegotiation。
并回答你关于它是否非常有效的问题"。我认为它几乎总是肯定的,因为你的有效载荷往往要小得多,因为你只传输数据,而不是数据+格式(HTML,javascript,css等)。它还提供了一种分离关注点的方法,允许客户端专注于状态和表示,后端则专注于数据。此外,这意味着您可以使用相同的后端API创建多个客户端(基于移动,基于桌面,基于Web)。