在创建REST API时,API内的命名约定是否有任何指导方针或事实上的标准(例如:URL端点路径组件,查询字符串参数)?驼色大写,还是下划线?其他人呢?

例如:

api.service.com/helloWorld/userId/x

or

api.service.com/hello_world/user_id/x

注意:这不是RESTful API设计的问题,而是用于最终路径组件和/或所使用的查询字符串参数的命名约定指南。

任何指导方针将不胜感激。


当前回答

如果你使用Oauth2对客户端进行身份验证,我认为你至少需要在两个参数名上加下划线:

client_id client_secret

我在我的REST API(尚未发布)中使用了camelCase。在编写API文档时,我一直在考虑将所有内容都更改为snake_case,这样我就不必解释为什么Oauth参数是snake_case,而其他参数不是。

参见:https://www.rfc-editor.org/rfc/rfc6749

其他回答

我认为在REST url中尽可能少地使用特殊字符是可取的。REST的好处之一是它使服务的“接口”易于阅读。Camel格式或Pascal格式可能适合于资源名称(Users或Users)。我不认为REST有什么严格的标准。

另外,我认为甘道夫是对的,在REST中不使用查询字符串参数通常更干净,而是创建定义你想要处理哪些资源的路径。

http://api.example.com/HelloWorld/Users/12345/Order/3/etc

Dropbox、Twitter、谷歌Web Services和Facebook的REST API都使用下划线。

如果你使用Oauth2对客户端进行身份验证,我认为你至少需要在两个参数名上加下划线:

client_id client_secret

我在我的REST API(尚未发布)中使用了camelCase。在编写API文档时,我一直在考虑将所有内容都更改为snake_case,这样我就不必解释为什么Oauth参数是snake_case,而其他参数不是。

参见:https://www.rfc-editor.org/rfc/rfc6749

我在http://soaprobe.blogspot.co.uk/2012/10/soa-rest-service-naming-guideline.html上有一份我们在prod中使用的指南清单。指南总是有争议的…我认为一致性有时比把事情做到完美更重要(如果有的话)。

我不认为骆驼的情况是这个例子中的问题,但我认为对于上面的例子,一个更RESTful的命名约定应该是:

api.service.com/helloWorld/userId/x

而不是让userId作为一个查询参数(这是完全合法的),我的例子以一种更RESTful的方式表示该资源。