2017-01-11 18 views
1

我设计我的API,我在URL如果我在URL中指定API版本,我是否应该提供一个选项以将它放在标题中?

GET /Issuer/{certificate-name}/versions?api-version=2016-10-01[&maxresults] 

我也应该有一个在HTTP标头(灵活性)指定指定一个可选的API版本?

如果两种方法之间存在冲突,我该怎么办?

+0

它是可选的开始(每个客户端*一些*版本的API)的价值是什么?用两种不同的方式来指定它有什么价值? – sisyphus

+0

没有指定值等于最新版本。拥有两种不同表达式的价值在于允许REST -idealogical/fundamentalist客户获得他们想要的功能。从这个意义上说,我是一家独立软件开发商,我正在考虑适应这两种观点。 @sisyphus – LamonteCristo

+0

我发现允许查询参数中的版本非常有用,尤其是对于浏览器中的测试目的。我喜欢这个想法,只需点击一个链接即可显示API如何使用我最喜欢的浏览器及其JSON扩展程序回复。如果发生冲突,你可以返回一个400,并指出原因的错误,或给予其中一个优先级(我会给queryParameter比头更多的值,因为它可能被用来覆盖任何现有的配置测试的情况)。但是,请注意API版本与资源表示版本。 –

回答

1

允许从2种不同的输入方法(查询字符串和标题)输入API版本没有明显的优势。但是,如果客户指定了两者,那么缺点是冲突解决。

无论在标头还是查询字符串中,API版本的指定位置都没有正确或错误的方式。但请记住,URL需要解析,而大多数情况下是通过框架完成的,但仍然是一个计算资源,用于解析URL以从中提取值。

我(亲自)更喜欢使用标题出于简单。此外,将URL保留为仅指向客户端的功能/意图的地址会更加简洁。

相关问题