GET /questions/123/answers или GET /answers? Question_id=123 для RESTful API

GET /questions/123/answers это то, что я часто вижу, но я думаю, что делать второй путь GET /answers?question_id=123 лучше описывает, что происходит, когда вы получаете доступ к списку /answers ресурс с фильтром question_id=123

2 ответа

Используйте либо то, что легче для вас. Оба являются полностью ОТЛИЧНЫМИ, как сказал @EricStein в двух комментариях.

Я хотел бы / Вопросы /123/ ответы перенаправить на / ответы? Вопрос =123

Я бы не упомянул "id" в параметре.

Оба способа могут быть использованы и будут понятны другим, если они совместимы с вашим API. Но они следуют иной семантике.

/answers?question_id=123 это несемантический URI, в котором вы предоставляете параметры запроса для настройки (в вашем случае фильтрации) ответа вашей службы. Параметры запроса имеют более неявную базовую логику и более высокую сложность, например, в сочетании с другими параметрами запроса.

Семантический или RESTful эквивалент /questions/123/answers потому что если вы читаете его путь сегмент за сегментом пути, вы сначала указываете на URI коллекции (/questions), затем к элементу URI (/questions/123), а затем снова к URI коллекции (/questions/123/answers). Таким образом, доступ согласован, и это одна из точек зрения RESTful: унифицированный интерфейс.

Другие вопросы по тегам