指定要从REST查询返回的数据

时间:2019-02-04 07:23:49

标签: rest

指定资源返回哪些列的首选方法是什么?

资源是名词,因此当我说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

但这似乎是在混合数据并与查询字符串一起返回。应该可以,但看起来不太优雅。

2 个答案:

答案 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