указание данных для возврата из запроса REST - PullRequest
0 голосов
/ 04 февраля 2019

Каков предпочтительный способ указать, какие столбцы возвращать для ресурса?

ресурс является существительным, поэтому, когда я говорю, 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

но похоже, что данные смешиваются для возврата со строкой запроса.Должно работать, но кажется не элегантным.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Обычно результаты REST должны содержать все столбцы, кроме больших или сложных свойств.

  • GET /employees возвращает список сотрудников (возможно, разбитых на страницы);
  • GET /employees/100 возвращает сотрудникасо всеми столбцами примитивных типов;
  • GET /employees/100/photo возвращает большое двоичное свойство photo;

Как правило, удаленные службы должны возвращать большие объекты из-за задержки в сети.

В соответствии со стандартным JSON API вы можете включать связанных объектов в результат с параметром include:

GET /employees/100?include=manager,salary

0 голосов
/ 04 февраля 2019

Вы хотите использовать QueryMap в Retrofit 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

...