Ожидается, что операция предложит ценовое предложение для конкретного продукта. Есть две входные переменные, которые определяют возвращаемый объект цитаты. Семантически имеет смысл предоставить это как запрос GET.
GET host/api/v1/.../quotes/{variableA}/{variableB}
Это вернет объект кавычки для кортежа (variableA, variableB).
Теперь у меня есть еще два требования:
Операция должна иметь возможность принимать несколько входных кортежей. Я хочу иметь возможность предоставлять кавычки на срок до 6 пунктов, которые все описаны в упомянутом кортеже.
Операция должна иметь возможность опустить некоторые детали цитаты. Я не знаю, является ли наилучшей практикой создание новой конечной точки для такого рода фильтрации ресурсов, или же вы бы предпочли другие методы.
В моем простом подходе я бы переключился на запрос POST для требования 1:
POST host/api/v1/.../quotes
{
"items":
[
{
"variableA": "someValue",
"variableB": someValue
},
{
"variableA": "someValue",
"variableB": someValue
}
]
}
Мои вопросы:
Насколько смущает тот факт, что я переключаюсь с метода GET на метод POST, если пользователь хочет получить один и тот же ресурс несколько раз? Я бы использовал GET, если бы мог идентифицировать кавычки по идентификатору, но кортеж делает его очень длинным. Какова лучшая практика здесь?
Как бы я предоставил отфильтрованную версию как одного, так и нескольких ресурсов? Другая конечная точка? Тег фильтра?
Я очень новичок в разработке API и раньше допускал много времени на ошибки, поэтому спасибо за ваш вклад.