GET vs. POST, когда требуются параметры - PullRequest
1 голос
/ 02 марта 2012

У меня есть конечная точка в API, которую я сейчас пишу, которая должна вернуть отфильтрованный список друзей пользователя Facebook. Пользователи проходят проверку подлинности на Facebook в мобильном приложении, вызывающем эту конечную точку, поэтому access_token хранится в мобильном приложении, а не в базе данных API.

Endpoint: /users/:id/friends
Parameters: access_token (the requested user's Facebook access_token)
Return: A list of the user's Facebook friends who have the app installed

Действие не изменяет никакие данные; это просто возвращает отфильтрованный список. Однако, поскольку требуется дополнительный параметр (access_token), это означает, что запрос GET не будет соответствовать структуре маршрутизации API, поскольку ни к каким другим маршрутам GET не добавлен дополнительный параметр.

Какой из следующих HTTP-запросов подходит для этого действия?

GET /users/:id/friends/:access_token
GET /users/:id/friends?access_token=<token>
POST /users/:id/friends (passing 'access_token' as a POST param)

1 Ответ

3 голосов
/ 02 марта 2012

Я бы определенно не делал это как POST, потому что вы запрашиваете ресурс, а не модифицируете его.Возможно, он не полностью соответствует RESTfulness Rail, но я думаю, что он намного лучше, чем выполнение POST для запроса ресурса.

Вы также можете выполнить GET на /users/:id/friends?access_token=<TOKEN>, чтобы вы соответствовали более точно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...