问题描述
我正在编写庞大的 Rest API,以使其易于发现,我正在以这种方式制作模式。
http://127.0.0.1:8000/membership/api/v1/make-a-payment
但我注意到人们过去常常以这种方式制作图案:http://127.0.0.1:8000/ap/v1/blabla
谁能告诉我最佳做法是什么?
这样写模式可以吗? http://127.0.0.1:8000/membership/api/v1/make-a-payment
?
我只是想让 swegger 文档很容易发现它。
你有什么看法?
解决方法
谁能告诉我最佳做法是什么?
REST 不关心您对资源标识符使用什么拼写约定。
RFC 3986 定义了 paths and path segments。
路径组件包含数据,通常以分层形式组织...
因此,许多人会选择将他们的标识符层次结构与其资源层次结构对齐。这不是要求你这样做,但作为一个组织原则,它并不差,当然也不比任何其他任意选择的惯例差。
例如,一种常见的做法是,集合项的标识符拼写从属于集合本身的标识符。
{
"manifest_version": 3,"name": "CustomUTM","version": "1.3","description": "Custom UTM Extension","declarative_net_request": {
"rule_resources": [
{
"id": "ruleset_1","enabled": true,"path": "utmsource.json"
},{
"id": "ruleset_2","path": "utmmedium.json"
},{
"id": "ruleset_3","path": "utmcontent.json"
},{
"id": "ruleset_4","path": "utmcampaign.json"
},{
"id": "ruleset_5","path": "utmterm.json"
}
]
},"host_permissions": ["*://*/*"],"permissions": ["declarativeNetRequest","declarativeNetRequestFeedback"],"icons": {
"128": "icon128.png" }
}
因此,您可能会合理地询问 api 是否是成员资格集合中多项中的一项,或者会员资格是否是 api 集合中多项中的一项。
您可能还想查看 relative resolution 以及如何使用点段在层次结构中向上导航。如果成员资格和其他想法之间的引用比 api 和其他想法之间的引用更常见,那么拼写 /api/membership 可能被证明是更方便的选择。
我认为一个很好的指导方针是:任何路径段都意味着在同一层级上存在兄弟姐妹。 /photos <-- the collection
/photos/17 <-- an item in the collection
意味着 /membership/api
的存在——否则,为什么不只是 /membership/something-that-isnt-api
?