我正在实现一个包含/feed
请求的HTTP REST API。该请求返回用户的新闻提要。
请求带有几个参数,包括userId
,追随者列表,startTime
和maxItems
。
在服务器端(Python和Flask)实现它的最简单方法是添加一个JSON有效负载,我可以从中读取参数。
唉,在GET
请求中添加有效负载并不是一个好主意,而且许多客户端库都不支持。
我的选择:
- 使
/feed
成为POST
请求。这是丑陋的,因为POST
不应该用于从服务器请求信息。 - 将
/feed
调用拆分为/updateFollowers
(POST
)和/feed
(GET
)。这样会浪费时间,因为GET
只能在POST
调用之后进行。
两个选项似乎都不对。是否有任何标准的方法使GET
类调用与一堆复杂的参数?
拆分/feed调用到/updatefollower (POST)和/feed (GET)。它会浪费时间,因为GET调用只能在POST调用.
REST并没有真正的规则,你可能已经意识到,但我想与你分享我的观点:在资源中像这样放置"请求类型动词"是相当丑陋的,所以我不会这样做。
创建/feed POST请求。它是丑陋的,因为POST不应该如此用于从服务器请求信息。
我明白你为什么觉得这很丑。然而,使用POST请求获取数据听起来是错误的,正如这个问题的第一个答案所述:
实现RESTful搜索的最佳方法是考虑搜索本身就是一种资源。然后你可以使用POST动词,因为你正在创建一个搜索。你不需要真的去创造一些东西在数据库中使用POST。
由于这与您正在做的类似,因此使用POST可能不是一个坏主意。我找不到更好的替代方法,所以你可能想这样实现它