首页 > 解决方案 > 没有复数的 Rest API 命名约定

问题描述

我用烧瓶做了一个 API 服务器。

我也想在未来遵循 REST API 约定进行维护。

经过一番搜索,发现名词与复数一起使用。

但我想知道,如果名词没有复数,我该如何命名呢?

以下端点供用户使用。

/user/{id}- 单用户

/users/- 所有用户

名词用户很好。但是,例如,名词luggage,没有复数只有单数。

我对它的命名感到困惑。

这里有什么想法吗?

标签: restflaskurinaming-conventions

解决方案


我也想在未来遵循 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并查看复数方法的作用)。


推荐阅读