Как лучше всего разработать REST API с несколькими фильтрами?
Как личный проект по программированию, я работаю над очисткой каталога курсов моего университета и предоставлением данных в виде REST API. Я успешно удалил все данные и сохранил их в базе данных, и сейчас работаю над API.
Курсы могут быть отфильтрованы по многим критериям: преподаватель, колледж, кредиты, время, день и т. Д.
Каков наилучший способ предоставить API в этой ситуации?
Опция 1
Предоставьте многочисленные URL, такие как
example.com/api/byinstructor/<instructorcode>
example.come/api/bycollege/<collegecode>
example.com/api/bycollegeandinstructor/<collegecode>/<instructorcode>
...and so on
Мне нужно было бы иметь URL для всех перестановок. Это кажется очень громоздким, как для меня, так и для пользователей API, и очень нечистым.
Вариант 2
Предоставляйте API только для основных параметров, таких как:
example.com/api/byinstructor/<instructorcode>
example.come/api/bycollege/<collegecode>
И если потребитель хочетbycollegeandinstructor
Он делает фильтрацию на своем конце.
Вариант 3
Пользователь передает мне строку JSON, и я использую ее для получения критериев фильтрации.
example.com/api/getcourses/<jsonstring>
jsonstring =
{
instructor:<instructorcode>,
college:<collegecode>,
...and so on
}
Я полагаю, что вместо строки Json мне также может потребоваться массив POST, но для потребителя это не кажется обязательным, поскольку он получает данные.
Или есть другой способ сделать это, о котором я не знаю? Если это третий вариант, который является лучшим, не могли бы вы предоставить краткую сводку, которая лучше всего подготовит запрос SQL на основе строки JSOn, которая может иметь переменное число значений?