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