2012-03-02 3 views
1

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

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) 

ответ

3

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

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

+0

Это было мое чувство. Использование GET более точно соответствует HTTP. Я собираюсь пойти с вашим предложением добавить «access_token» как параметр GET, а не часть URL-адреса. –

Смежные вопросы