Flask:使用数组参数实现HTTP GET
我正在实现一个HTTP REST API,它包含一个Flask:使用数组参数实现HTTP GET,http,rest,flask,payload,rfc2616,Http,Rest,Flask,Payload,Rfc2616,我正在实现一个HTTP REST API,它包含一个/feed请求。该请求返回用户的新闻提要 该请求附带了几个参数,包括userId、追随者列表、startTime和maxItems 在服务器端(Python和Flask)实现它的最简单方法是添加JSON负载,我可以从中读取参数 唉,向GET请求添加有效负载,许多客户端库都不支持 我的选择: 发出/feedaPOST请求。这很难看,因为不应该使用POST从服务器请求信息 拆分/feed调用/updateFollowers(POST)和/feed
/feed
请求。该请求返回用户的新闻提要
该请求附带了几个参数,包括userId
、追随者列表、startTime
和maxItems
在服务器端(Python和Flask)实现它的最简单方法是添加JSON负载,我可以从中读取参数
唉,向GET
请求添加有效负载,许多客户端库都不支持
我的选择:
- 发出
a/feed
请求。这很难看,因为不应该使用POST
从服务器请求信息POST
- 拆分
调用/feed
(/updateFollowers
)和POST
(/feed
)。这将浪费时间,因为GET
调用只能在GET
调用之后进行POST
正如您可能知道的,REST并没有真正的规则,但我想与您分享我的观点:像这样在资源中放置“请求类型动词”是非常难看的,所以我不会这样做 提出/提供POST请求。这很难看,因为帖子不应该被删除 用于从服务器请求信息 我理解你为什么认为这很难看。但是,使用POST请求获取数据听起来是错误的,如中所述: <> P>实现REST搜索的最佳方法是考虑搜索 它本身就是一种资源。然后你可以用POST动词,因为你 正在创建搜索。你不必真的去创造一些东西 在数据库中使用POST
因为这和你正在做的事情相似,所以使用POST可能不是一个坏主意。我看不到更好的替代方案,所以您可能希望这样实现它。REST并没有您可能知道的规则,但我想与您分享我的观点:像这样在资源中放置“请求类型”也是非常难看的
/getFeed
,我只会坚持/feed
。除此之外,与其将用户作为参数传递给/feed
,不如像/users//feed
那样构造url,但这取决于其他url的实现service@TimCastelijnsgetFeed
是一个错误-它实际上是/feed
。除此之外,userId
对于URL参数是可以的,但是如何在URL中传递数组呢?在这种情况下,使用POST可能不是一个坏主意。看@TimCastelijns似乎是对的。你想把它作为一个完整的答案发布,这样我就可以投票/接受它了吗?因为你必须使用一堆复杂的参数,所以发布请求是有意义的。我不认为有任何规则规定POST绝对不能用于读取操作。但是,我想问您是否有一种方法可以最小化示例中的参数。如果您只是在GET请求中发送“userid”并让服务器确定其追随者等,会怎么样?对于max条目,您可以使用类似/feed//的东西将其添加到GET请求中,其中startTime和maxItems可以是可选的,flask view将默认它们为POST
-搜索对我来说没有多大意义,但它可能是(相当多)弊病中较小的一个。@AdamMatan它可能是其中较小的一个(相当多)邪恶,我想是的,是的。你可以让它变得更有意义,因为这样认为搜索本身就是一种资源。