Как лучше всего разработать 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, которая может иметь переменное число значений?

Ответы на вопрос(1)

Ваш ответ на вопрос