【问题标题】:Rest API naming convention with no plural没有复数的 Rest API 命名约定
【发布时间】:2018-12-06 03:23:46
【问题描述】:
我用flask做了一个API服务器。
我也想在以后的维护中遵循 REST API 约定。
经过一番搜索,发现名词与复数一起使用。
但是我想知道,如果名词没有复数,我该如何命名呢?
以下端点供用户使用。
/user/{id} - 单用户
/users/ - 所有用户
名词用户很好。但是,例如,名词luggage,没有复数只有单数。
我对它的命名感到困惑。
这里有什么想法吗?
【问题讨论】:
标签:
rest
flask
uri
naming-conventions
【解决方案1】:
在 REST 中,以及更普遍的编程中,为变量、资源、表发明名称的情况并不少见...
我想说有一个端点/luggages/ 来清楚地描述它处理多个资源的事实是可以的。
【解决方案2】:
我也想在以后的维护中遵循 REST API 约定。
REST 不关心您为资源标识符使用的拼写约定。任何与RFC 3986 一致的拼写都可以。例如,如果您查看RFC 7230,您会发现没有对名词的引用。
http://example.org/C6CF1E69-1EFD-4836-BDF7-025972D85298
... 是一个完全可以接受的 URI。
经过一番搜索,发现名词与复数一起使用。
通常,是的。在许多情况下,它将集合的元素视为集合本身的从属,因此经常出现拼写 /collection-name/member-id。
但是,正如您所注意到的,并非所有英语名词都有复数形式。并非所有英语名词都有单数形式,这也是事实。任何绝对规则都需要 (a) 一个不出现任何特殊名词的域,或者 (b) 一些对冲。
机器不在乎——我们没有编译器在字典中查找复数以确保遵守规则。就 URI 解析器而言,它只是一个组成路径段的字节序列。
只有人类观众才关心;事实上,人类并不在乎正确的拼写是否遵循规则,而是因为他们很容易猜到/记住正确的拼写。
简而言之,如果您需要 butter 或 spectacles 集合的标识符,遵循的合理协议是从可用的拼写中进行最佳猜测,而不必过多担心是否一种拼写遵循“规则”。
据我所知,flask 对 URI 复数没有强烈的看法;如果没有,或者意见不令人满意,您可以查看其他库以了解它们的作用(例如,启动 Rails Inflector 并查看复数方法的作用)。