然而,我们已经标准化为我们的 REST 端点使用 JSON:API;并非我们所有的数据都围绕存储库展开,似乎 CRNK 需要存储库才能工作。
那是对的吗?
例子
我写了一个非常简单的 Spring Boot 2.1.9 示例,它有一个控制器并在其中包含 CRNK,但是当我进入我的控制器时,我没有得到预期的 JSON:API 输出。
请记住,我刚刚开始研究 CRNK,这只是我正在测试的一个简单的“hello world”类型的应用程序
这是我的例子
package com.example.crnkdemo;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/test/v1.0")
public class Controller {
@GetMapping(value = "/{country}", produces = "application/vnd.api+json")
public Country test1(@PathVariable String country, @RequestParam(name = "filter[region]", required = false) String filter) {
return new Country(country, filter);
}
}
Country 只是我创建的一个虚拟类,它是:
package com.example.crnkdemo;
import io.crnk.core.resource.annotations.JsonApiId;
import io.crnk.core.resource.annotations.JsonApiResource;
@JsonApiResource(type = "country")
@AllArgsConstructor
@Data
public class Country {
@JsonApiId
private String country;
private String region;
结果
但是当我使用以下 URL http://localhost:8080/test/v1.0/US?filter[region]=northeast我得到
{
"country": "US",
"region":"northeast"
}
我本来期望 JSON API 类型的结果
{
"data": {
"type": "country",
"id": "US",
"attributes": {
"region": "northeast"
}
}
谢谢!