RESTful API GET方法参数

时间:2014-03-21 11:21:26

标签: api rest

我们正在创建一个RESTful API(Apache服务器上的PHP),它将与Android应用程序通信。如果我的问题是愚蠢的话,我是新来的,请原谅。 我想从api请求数据,所以我需要在请求中使用GET方法考虑语义。我必须发送一些额外的数据来指定我请求的数据。在GET请求中,我无法发送表单数据字段,因此我应该如何附加数据?

使用POST(但这不是语义)

  

请求标头:POST http://example.com/api/v1/serials

     

请求数据:date_from = 2013.01.01& date_to = 2014.01.01& userid = 112& is_in = 0& starts_with = afx00

使用GET并添加url params(我不知道这是否是REST API中的一个好习惯)

  

请求标头:获取http://example.com/api/v1/serials?date_from=2013.01.01&date_to=2014.01.01&userid=112&is_in=0&starts_with=afx00

或在GET中制作格式正确且没有url参数的URI(也不确定这一点。)

  

请求标头:获取http://example.com/api/v1/serials/date_from/2013.01.01/date_to/2014.01.01/userid/112/is_in/0/starts_with/afx00

哪一个最适合RESTful API架构?我应该使用哪个以及为什么?或许我想要什么其他选择?

2 个答案:

答案 0 :(得分:3)

毫无疑问,使用URL参数是最好的。它允许消费者使用他们选择的过滤器查询连续出版物。您的API应支持仅基于UserId或日期范围或两者返回结果。或其他有意义的输入组合。

在资源路径中嵌入过滤器的键/值对是一种反模式。很难理解每个路径元素的含义,并且您需要扭曲路由引擎以适应其他过滤条件。它在选择使用什么过滤条件方面也没有灵活性 - 实际上你需要为每个过滤器组合构建多个资源路径。并且管理着对每一对进行排序(使用URL参数,排序无关紧要)。可能有更多的理由来避免这种情况,但这些是第一个想到的。

答案 1 :(得分:1)

可以使用Bot GET方法。这是你的选择。但我更喜欢使用url params。这很容易。