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