如何在Act中控制JSON返回对象的字段
首先创建一个Article
类,以及对该资源的RESTful服务接口:
这里我们看到可以通过 POST /article
向服务提交article数据。假设我提交的数据是:
{
"title": "How to control JSON view in Actframework",
"content": "BlahBlah",
"author": "Gelin Luo",
"language": "Java",
"framework": "Actframework",
"tags" : [
{"name": "java"},
{"name": "mvc"},
{"name": "json"}
]
}
我可以得到类似下面的返回:
{
"id": "58a6409ab6c6fe2138b67f10",
"_created": "17/02/2017 11:15:22 AM",
"content": "BlahBlah",
"language": "Java",
"author": "Gelin Luo",
"_modified": "17/02/2017 11:15:22 AM",
"framework": "Actframework",
"tags": [
{
"name": "java"
},
{
"name": "mvc"
},
{
"name": "json"
}
]
当我发出GET /article
请求时,Article.Service.list()
方法会响应并返回所有的article列表:
@GetAction
public Iterable<Article> list() {
return findAll();
}
然后再发出GET /article
请求,就可以得到下面的响应了:
[
{
"author": "Gelin Luo",
"title": "How to control JSON view in Actframework"
}
]
我可以在Article.Service.show(String)
方法上采用类似的方法来定义需要返回的字段。有人提到过如果想让前端向后端在请求中传递需要的字段该怎么办,下面是Actframework提供的方法:
将show(String)
方法做一点改动
从
@GetAction("{id}")
public Article show(String id, String fields) {
PropertySpec.current.set(fields);
return findById(id);
}
然后就可以从前端在请求中加载fields
参数了:
上面的请求表示从返回JSON结果中去掉tags
, content
,和三个字段
返回结果将会是:
该博客的源码在码云上: