指定哪些数据是从一个REST查询返回

问题描述 投票:0回答:2

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

资源是一个名词,所以当我说,GET employees,我可以指定查询参数,以获得一组有限的员工。但是,关于每个员工的信息是什么?如果雇员表有12列,但我想只有三个,什么是指定它们的最好方法?或者,我把它们作为不同的资源?

GET employees(all columns)
GET employees(name, age)
GET employees(id, salary)

我所看到的建议,例如(注意过分热心编辑:虚构的例子如下,请不要降价语法混淆它)

http://path/to/server/employees/?q=queryparams&cols=col1,col5,co7

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

rest
2个回答
2
投票

通常REST结果应包含除大型或复杂性的所有列。

  • GET /employees返回员工(可能分页)的列表;
  • GET /employees/100返回与原始类型的所有列的雇员;
  • GET /employees/100/photo返回大的二进制属性photo;

在一般情况下,远程服务应该返回由于网络延迟大的物体。

根据标准JSON API可以包括与include参数结果相关的对象:

GET /employees/100?include=manager,salary


0
投票

你想用QueryMapRetrofit rest API

例如

在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

© www.soinside.com 2019 - 2024. All rights reserved.