2

我正在实现一个包含/feed请求的 HTTP REST API。该请求返回用户的新闻提要。

该请求带有一些参数,包括userId、关注者列表startTimemaxItems

在服务器端(Python 和 Flask)实现它的最简单方法是添加一个 JSON 有效负载,我可以从中读取参数。

唉,向GET请求中添加有效负载不是一个好主意,并且许多客户端库都不支持它。

我的选择:

  • 提出/feed请求POST。它很难看,因为POST不应该用于从服务器请求信息。
  • /feed将调用拆分为/updateFollowers( POST) 和/feed( GET)。这会浪费时间,因为GET只有在通话之后才能进行POST通话。

这两种选择似乎都是错误的。是否有任何标准方法可以GET使用一堆复杂的参数进行类似调用?

4

1 回答 1

1

将 /feed 调用拆分为 /updateFollowers (POST) 和 /feed (GET)。这会浪费时间,因为 GET 调用只能在 POST 调用之后进行。

正如您可能知道的那样,REST 并没有真正的规则,但我想与您分享我的观点:像这样在资源中放置“请求类型动词”非常难看,所以我不会这样做。

发出 /feed 一个 POST 请求。这很难看,因为不应该使用 POST 从服务器请求信息。

我明白你为什么认为这很丑陋。然而,使用 POST 请求获取数据听起来是错误的,正如这个问题的最佳答案所述:

实现 RESTful 搜索的最佳方式是将搜索本身视为一种资源。然后您可以使用 POST 动词,因为您正在创建搜索。您不必为了使用 POST 在数据库中创建某些东西。

由于这与您正在做的事情相似,因此使用 POST 可能不是一个坏主意。我没有看到更好的选择,因此您可能希望像这样实现它。

于 2014-05-14T14:02:45.367 回答