В настоящее время я добавляю REST API через http в онлайн-сервис и столкнулся с очень простой проблемой, для которой не могу найти ответ, который меня устраивает:
У меня есть в основном 2 ресурса: «пользователь» и «отчеты», как вы, наверное, догадались, отчеты связаны с пользователями (одному и только одному, = внешний ключ в моей базе данных)
В любом случае, у меня есть это отображение URL для GET
:
mywebsite/api/users/{id}
: возвращает пользователя и связанную с ним информацию или список пользователей, если идентификатор отсутствует
mywebsite/api/report/{id}
: возвращает отчет и связанную с ним информацию или список отчетов, если идентификатор отсутствует
Теперь я хотел бы получить отчеты для конкретного пользователя, мой способ сделать это сейчас - добавить необязательный параметр в метод GET
для отчетов: ?username={username}
и, если он присутствует, я фильтрую результаты, чтобы вернуть только отчеты для этого пользователя.
Я не могу не думать, что что-то не так ... если я начну делать что-то подобное, у меня будут методы, обрабатывающие GET
, заполненные if / else, ищущие отсутствующие параметры ...
Другие решения, о которых я подумал:
- включает отчеты в итоговые
GET
на mywebsite/api/users/{id}
, но у меня много отчетов, так что в итоге все станет очень плохо ...
- отобразить другой URL только для этой функции, но он просто не выглядит правильным ...
Я только что понял эту вещь REST, мне нравится концепция, но небольшое объяснение этого вопроса действительно помогло бы мне лучше понять ее.
Спасибо
Edit:
Кажется, я столкнулся с общей проблемой в мире REST, я привязал свои ресурсы к модели. Если вы привязываете ресурс к модели, у вас возникают проблемы с совокупными атрибутами.
Какой-то парень описывает эту ошибку здесь http://jacobian.org/writing/rest-worst-practices/, но я еще не понял, как справиться с этим, как он сказал ...
fyi Я использую django / поршень, но этот вопрос должен отвечать независимо от языка.