我有一个简单的问题,文档并没有帮助我解决它。
我创建了一个 Grails v3.3.3 演示项目 - 并创建了一个名为 JsonApiBook 的简单域类,具有像这样的“名称”属性
package ttrestapi
import grails.rest.*
@Resource (uri='/jsonApiBook', formats=['json','xml'])
class JsonApiBook {
static constraints = {
}
String name
}
并标记了 URI,因为文档说 JSON API 渲染仅适用于域类(而不是控制器类)。
在我的引导程序中,我已将 book 的实例保存到表中 - 并且可以普遍查看。
在我的视图目录中,我创建了一个 jsonApiBook 文件夹并创建了两个 gson 文件。
像这样的“_jsonApIBook”模板
import ttrestapi.JsonApiBook
model {
JsonApiBook book
}
json jsonapi.render(book)
它调用 jsonapi 辅助对象来呈现实例。
我在同一个目录中创建了一个 index.json,如下所示:
import ttrestapi.Book
model {
List<Book> bookList
}
// We can use template namespace
// method with a Collection.
json tmpl.book(bookList)
当我运行应用程序并使用邮递员或浏览器进行渲染时,我会得到一个结果,但它的 Json api 兼容(我认为它被忽略了模板)。
所以 localhost:8080/jsonApiBook 只是返回(看起来是默认布局):
[
{
"id": 1,
"name": "json api book3"
}
]
和 localhost:8080/jsonApiBook/1 只返回'null',这是不对的。
我应该如何设置 json 视图以呈现符合 JSON API 的输出?因为这似乎无法正常工作。