Структура Restful Uri, чтобы получить массив ресурсов того же типа только с ограниченными полями в ответ? - PullRequest
0 голосов
/ 23 мая 2018

У нас есть следующий API, чтобы получить список всех версий автомобилей в нашей базе данных.Конкретная версия может иметь несколько вариантов цвета.

   GET /api/versions/ 
   [
      {
        "id": 1,
        "colors": [{"name":"red", "hex": "#ff0000"},{{"name":"blue", "hex": #0000ff}}], //array of colors of that version
        "price": 10000
      },
      {
        "id": 2,
        "colors": [{"name":"red", "hex": "#ff0000"},{{"name":"blue", "hex": #0000ff}}], //array of colors of that version
        "price": 20000
      },
      ...
    ]

Клиент хочет, чтобы API получал НЕ ВСЕ, а данные нескольких версий и только поле цвета.Каким должен быть URI для такого требования?Я думал о чем-то похожем ниже, но я не уверен:

Чтобы получить цвета версий 8 и 9:

   GET /api/versions/?fields=colors&id=8,9
   [
     {
        "id": 8,
        "colors": [{"name":"tui", "hex": "#gg0000"},{{"name":"rie", "hex": #or0000}}], //array of colors of that version
     },
     {
        "id": 9,
        "colors": [{"name":"rie", "hex": "#or0000"},{{"name":"tui", "hex": #gg0000}}], //array of colors of that version
     }
   ]

Обратите внимание: У меня здесь слишком упрощенные вещи.Ответ версии довольно сложен и содержит много других полей, кроме идентификатора, цвета и цены, упомянутых выше.Кроме того, мы получим несколько таких требований, как мы предъявляем к цвету в настоящее время, т.е. чтобы получить цену для нескольких версий.

1 Ответ

0 голосов
/ 24 мая 2018

Параметры запроса, которые вы указали, идеальны!

Если у вас есть уникальные идентификаторы для автомобилей, которые могут стать частью вашей конечной точки API, например

/api/cars/$car_id/versions?fields=colors,price&ids=8,9

, или вы можете попробовать использовать / api / carversions вместо /api/versions.

Вы также можете отослать мой ответ на похожий вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...