指定资源返回哪些列的首选方法是什么?
资源是名词,因此当我说GET employees
时,我可以指定查询参数来获取有限的一组雇员。但是每个员工的信息呢?如果employees表有12列,但我只希望有三列,那么指定它们的最佳方法是什么?还是我将它们视为不同的资源?
GET employees(all columns)
GET employees(name, age)
GET employees(id, salary)
我已经看到了一些建议,例如(热心编辑的注意:下面的虚构示例,请不要使用markdown语法对其进行混淆)
http://path/to/server/employees/?q=queryparams&cols=col1,col5,co7
但这似乎是在混合数据并与查询字符串一起返回。应该可以,但看起来不太优雅。
答案 0 :(得分:2)
通常,REST结果应包含除大型或复杂属性之外的所有列。
temp.next()
返回员工列表(可能是分页的); GET /employees
返回具有原始类型的所有列的雇员; GET /employees/100
返回大二进制属性GET /employees/100/photo
; 通常,由于网络延迟,远程服务应返回大对象。
根据标准JSON API,您可以使用photo
参数在结果中包括个对象>
include
答案 1 :(得分:0)
您想在QueryMap
Retrofit
API中使用rest
例如
在API服务中
@GET("/employees")
Call<List<Employees>> getEmployees(
@QueryMap Map<String, String> options
);
活动中
private void getEmployees() {
Map<String, String> data = new HashMap<>();
data.put("q", "queryparams");
data.put("cols", "col1,col5,co7");
// simplified call to request the news with already initialized service
Call<List<Employees>> call = Service.getEmployees(data);
call.enqueue(…);
}
更多详细信息,请访问改造文档:Retrofit-Rest