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

8
задан Yami Odymel 14 July 2017 в 15:52
поделиться