需要参数时,GET与POST

时间:2012-03-02 19:07:41

标签: ruby-on-rails

我正在编写的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 个答案:

答案 0 :(得分:3)

我绝对不会将其作为POST,因为您正在请求资源,而不是修改它。它可能不完全符合Rail的RESTfulness,但我认为它比POST请求资源要好得多。

您还可以在/users/:id/friends?access_token=<TOKEN>上进行GET,以便更贴近您。