在烧瓶路线上分隔多个单词的约定是啥?

Posted

技术标签:

【中文标题】在烧瓶路线上分隔多个单词的约定是啥?【英文标题】:What is the convention for separating multiple words on a flask route?在烧瓶路线上分隔多个单词的约定是什么? 【发布时间】:2021-01-09 17:29:54 【问题描述】:

我有这两条路线:

api.add_resource(X, "/<string:stage>/api/sales/by-type")
api.add_resource(Y, "/<string:stage>/api/sales/filters/by-type")

应该是/by_type 还是/by-type/by/type 会很奇怪,因为 /by 本身就是一条路线,这没有任何意义。找不到任何关于它的文档。

【问题讨论】:

您的问题在我看来更像是一个 API 设计问题,而不是与 Flask 相关的约定。话虽如此,请看一下这个问题=> ***.com/questions/10302179/…。它似乎解决了更大的设计问题。 【参考方案1】:

@nitul 是对的,一般来说它是关于 API 设计的,但是 连字符 通常用于 url,即使它不是标准或官方的,但被视为最佳实践,seo 友好且 url 更优雅,漂亮。

另一方面,我想提请您注意 url 中的一些特殊/额外参数,例如 filterssortingpagination,将它们用作额外参数?type=TYPE 以及您的基本/规范网址/&lt;string:stage&gt;/api/sales 更有意义,因为您提到的两条路线最后在逻辑上是相同的。看看这篇好帖子https://www.moesif.com/blog/technical/api-design/REST-API-Design-Filtering-Sorting-and-Pagination/,它详细阐述了具有良好模式的主题。据说,您只需要一条路线:

api.add_resource(X, "/<string:stage>/api/sales")

然后根据额外的参数,例如:?type=TYPE 在 url 中返回适当的对象集,这样你的 API 就更紧凑(避免冗余)、可维护和可扩展。

另外,由于您使用的是Flask,并且根据您的需要(如果有),请考虑自定义 URL 转换器(本主题 https://exploreflask.com/en/latest/views.html#custom-converters 将帮助您)

【讨论】:

以上是关于在烧瓶路线上分隔多个单词的约定是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何确保烧瓶应用程序已在所有路线上获得授权?

烧瓶捕捉和嵌套常见路线

在烧瓶中的路线和主要之间使用共享变量

烧瓶重定向多条路线

python 获取所有烧瓶路线的列表

您将如何为地图上各点之间的路线提供路线?缺失的部分是啥?