Как спроектировать операцию, которая предоставляет один или несколько ресурсов в двух разных вариантах? - PullRequest
0 голосов
/ 15 марта 2019

Ожидается, что операция предложит ценовое предложение для конкретного продукта. Есть две входные переменные, которые определяют возвращаемый объект цитаты. Семантически имеет смысл предоставить это как запрос GET.

GET host/api/v1/.../quotes/{variableA}/{variableB}

Это вернет объект кавычки для кортежа (variableA, variableB). Теперь у меня есть еще два требования:

  1. Операция должна иметь возможность принимать несколько входных кортежей. Я хочу иметь возможность предоставлять кавычки на срок до 6 пунктов, которые все описаны в упомянутом кортеже.

  2. Операция должна иметь возможность опустить некоторые детали цитаты. Я не знаю, является ли наилучшей практикой создание новой конечной точки для такого рода фильтрации ресурсов, или же вы бы предпочли другие методы.

В моем простом подходе я бы переключился на запрос POST для требования 1:

POST host/api/v1/.../quotes
{
    "items":
    [
        {
            "variableA": "someValue",
            "variableB": someValue
        },
        {
            "variableA": "someValue",
            "variableB": someValue
        }
    ]
}

Мои вопросы:

  1. Насколько смущает тот факт, что я переключаюсь с метода GET на метод POST, если пользователь хочет получить один и тот же ресурс несколько раз? Я бы использовал GET, если бы мог идентифицировать кавычки по идентификатору, но кортеж делает его очень длинным. Какова лучшая практика здесь?

  2. Как бы я предоставил отфильтрованную версию как одного, так и нескольких ресурсов? Другая конечная точка? Тег фильтра?

Я очень новичок в разработке API и раньше допускал много времени на ошибки, поэтому спасибо за ваш вклад.

...