我正在努力决定如何设计restful url。我完全赞成使用带有名词而不是动词的url的restful方法,我不知道如何做到这一点。

我们正在创建一个服务来实现一个金融计算器。计算器接受一堆参数,我们将通过CSV文件上传这些参数。用例包括:

上传新参数 获取最新参数 获取给定业务日期的参数 激活一组参数 验证一组参数

我收集的restful方法将有以下类型的url:

/parameters
/parameters/12-23-2009

你可以通过以下方法实现前三个用例:

在POST请求中包含参数文件 第一个URL的GET 第二个URL的GET

但是在没有动词的情况下如何完成第4和第5个用例呢?你不需要这样的url吗:

/parameters/ID/activate
/parameters/ID/validate

??

我想让我的RESTful API非常可预测。决定何时使用URI而不是使用查询参数分割数据的最佳实践是什么?

对我来说,支持分页、排序和分组的系统参数在'?'之后是有意义的。但是,像“status”和“region”这样的字段或其他属性如何划分您的集合呢?如果这些是查询参数,什么是关于知道什么时候使用路径参数的经验法则?

我正在为一个内部网络应用程序设计一个基于http的API。我意识到这是一个非常小的问题,但是:我应该使用连字符、下划线或骆驼号来分隔uri中的单词吗?


以下是我最初的想法:

camelCase

如果服务器不区分大小写,可能会出现问题 似乎在查询字符串键(http://api.example.com?**searchQuery**=…)中有相当广泛的使用,但在其他URI部分中没有

连字符

比其他选择更具美感 似乎在URI的路径部分被广泛使用 从来没有见过连字符的查询字符串键在野外 可能对搜索引擎优化更好(这可能是一个神话)

下划线

编程语言可能更容易处理 一些流行的api (Facebook, Netflix, StackExchange等)在URI的所有部分都使用下划线。

我倾向于用下划线表示所有内容。事实上,大多数大公司都在使用它们(见https://stackoverflow.com/a/608458/360570)。