首页
学习
活动
专区
圈层
工具
发布

REST API 设计最佳实践:如何构建、设计和使用 API ?

不要在 URI 中使用动词 到目前为止,如果您已经理解了基本概念,那么您会开始意识到在URI中放置动词是不符合RESTful的,这是因为HTTP动词应该足以准确描述正在对资源执行的操作。...我将注意到:param 是一个URI参数(如ID或缩写)的占位符,你第一个想法可能是创建类似于这个的端点: GET: /books/:slug/generateBookCover/ 但是,在这里GET方法在语法上足以说明我们正在获取...优雅地处理尾部斜杠 关于URI是否应该有尾随斜杠/实际上并不是一个值得争论的问题,你只需要选择其中一种方式(即带或不带尾随斜杠),坚持使用它,并在客户端使用错误约定时优雅地重定向。 讲个故事吧!...我所使用的端点看起来像这样: POST: /buckets 当时我非常生气,怎么也想不明白究竟哪里出了问题。最后,原来是因为缺少了尾随斜杠导致服务器出错!...专业提示:大多数基于网络的框架(Angular、React等)都有一个选项可以优雅地重定向至带或不带尾随斜杠的URL版本。找到那个选项并尽早激活。 10.

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【愚公系列】2022年04月 Python教学课程 71-DRF框架之内置路由

    将生成以下路由: 网址模式:^users/{pk}/set_password/$ 网址名称:'user-set-password' 默认情况下,URL 模式基于方法名称,URL 名称是方法名称和带连字符的方法名称的组合...上面的示例现在将生成以下 URL 模式: 网址路径:^users/{pk}/change-password/$ 网址名称:'user-change_password' 注意点: 默认情况下,创建的 URL...例如: router = SimpleRouter(trailing_slash=False) 尾随斜杠在 Django 中是约定俗成的,但在其他一些框架(如 Rails)中默认不使用。...你选择使用哪种风格很大程度上取决于你的偏好,尽管一些javascript框架可能会期望特定的路由风格。 路由器将匹配包含除斜杠和句点字符之外的任何字符的查找值。...路由上的尾部斜杠一样,可以通过在实例化路由器时将参数设置为 来删除。

    1.1K20

    YAML 多行字符串处理

    核心行为: 严格保留 输入文本中的所有换行符和行尾的空白。文本块内的缩进和行首空白也会被保留。结果: 解析后的字符串将包含你在 YAML 块中编写的所有换行符,格式与你在文件中看到的几乎完全一致。...\")\n"# 注意:保留了所有缩进、换行和行尾的注释。3. 折叠块 (Folded Block) - >符号: 使用右尖括号 > 后跟换行符开始。核心行为: 将文本块中的换行符替换为空格。...行尾反斜杠 \: 如果一行以非转义的反斜杠 \ 结尾,则该行不会折叠到下一行(即该换行符被保留),并且反斜杠会被移除(除非它被转义 \\)。行首空白: 块内的缩进和行首空白会被保留(与 | 相同)。...多行字符串(带换行)单行或段落式字符串(带空格) 适合内容 脚本、配置段、代码块描述文字、段落性说明文本 阅读体验 更易于阅读格式化内容更紧凑,节省行数...关于尾随换行符的具体处理,YAML 规范有详细定义,不同解析器实现可能稍有差异,但 - 和 + 的意图是明确的。最安全的做法是明确使用 - 或 + 来表达你的需求。

    60510

    Flask学习与项目实战2:url与视图函数映射、视图转url

    翻译:该视图没有返回一个可以响应的类型,如字符串、字典、wsgi可调用对象等。 jsonify 通过使用jsonify来进行返回这个json格式的东西。现在就可以将这个列表全部返回了。...也就是说当14行的url改变了,也不会影响我的url_for进行函数反转。仍然可以进行访问。 指定url末尾的斜杠 有些url的末尾是有斜杠的,但是有些没有,这实际上是两个不同的url。...时就算不带斜杠,也会被重定向到第一个去。...比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此应该给他重定向到登录页面。...在flask中,重定向是通过flask.redirect(location,code=302)这个函数来实现的,location表示需要重定向到的URL,应该配合之前讲的url_for()函数来使用,code

    27210

    Resultful Url 设计原则

    image.png 什么是URL? URI REST API 使用统一资源标识符(URI)来寻址资源。...在今天的网站上,URI 设计范围从可以清楚地传达API的资源模型, 如:http://api.example.com/louvre/leonardo-da-vinci/mona-lisa 到那些难以让人理解的...query] [“#” fragment] 规则 规则1:URI中不应包含尾随的斜杠(/):即,最后一位 不应该是 “/” 许多 Web 组件和框架将平等对待以下两个 URI: http://api.canvas.com.../shapes/ http://api.canvas.com/shapes 但不是所有框架都支持,可能有些会返回301 错误 规则2:正斜杠分隔符(/)必须用于指示层次关系 在 URI 的路径部分的正斜杠...为了实现简单的链接和调试的便捷,REST API 也可以通过查询参数来支持媒体类型的选择。 规则 7:端点名称是单数还是复数? 复数 特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。

    45510

    Flask | Flask基础 - URL与视图

    path: 和string的类似,但是接受斜杠。 uuid: 只接受uuid字符串。...@app.route('/projects/') def projects(): return 'project page' 上述例子中,当访问一个结尾不带斜线的URL会被重定向到带斜线的URL...=['GET','POST']) def login(): return 'login' 以上装饰器将让login的URL既能支持GET又能支持POST。...暂时性重定向:http的状态码是302,表示页面的暂时性跳转。比如访问一个需要权限的网址,如果当前用户没有登录,应该重定向到登录页面,这种情况下,应该用暂时性重定向。...在flask中,重定向是通过flask.redirect(location,code=302)这个函数来实现的,location表示需要重定向到的URL,应该配合之前讲的url_for()函数来使用,code

    92130

    *当你在浏览器地址栏输入一个URL后回车,将会发生什么事情?*

    *除GET请求外,还有一种常见请求是POST请求通常用于提交表单,二者的区别是GET请求不能带正文,但可以在URL中带参数;POST请求可以带正文,并在正文中携带参数。...*URL“http://facebook.com/”中的斜杠很重要,这种情况下浏览器可以安全地添加斜杠,但对于这种形式“http://example.com/folderOrFile”的URL,浏览器无法自动添加斜杠...,因为不清楚folderOrFile是文件夹还是文件,这种情况下,浏览器将在不带斜杠的情况下访问URL,并且服务器通过重定向进行响应,从而导致了不必要的往返。...九、浏览器发送对嵌入HTML的对象的请求 *当浏览器呈现HTML时,它会注意到需要获取其他URL的标记,此时浏览器将会发送GET请求以检索每个文件。...以下是原文作者访问facebook.com时检索到的一些URL: 这些URL中的每一个都将经历类似于HTML页面经历的过程,但是与动态页面有所不同,静态文件允许浏览器进行缓存,某些文件可能会从缓存中提供

    2.5K30

    搜索优化:利用IIS的URL重写模块配置IIS让不带www的域名永久301到www上面。

    在对网站做优化的时候通常会让不带www的域名如zjkdh.com永久301到自已要优化的域名上面,如(www.zjkdh.com),这么做就是为了集权,把所有域名的权重集到一个上面,这样的话有可能会使你域名的权重更集中...,不分散,这种前提下有可能会比不处理的情况涨的多一些。...下面就介绍一下用IIS URL重写的方法把指定域名永久301到自已的域名上面。 1 打开IIS相应站点,找到URL重写模块,如下图 ?...2 双击 URL重写模块进入规则设置页面,点击最右侧的添加规则 。 ? 3 给规则起个名字,比如 301 等 ,模式那儿就写 ....*即可,最五面的操作处选择重定向 把你的URL写进去后面记得加上 {R:0},重定向类型选择 永久301 ? 4 开始配置条件选项。 在条件选项处点击添加 增加选项。

    4.1K30

    在Bitbucket Cloud上发布网站

    您的存储库名称将是,happycat.bitbucket.io并且此URL到达已发布的静态网站: https://happycat.bitbucket.io 此页面上显示以下主题: 配置托管网站 要使用此功能...将存储库克隆到本地系统。...将index.html文件添加到存储库,提交更改,并将结果推送到Bitbucket。 导航到该 站点。例如,如果您要导航到 您的个人帐户或团队名称。系统在站点中显示HTML 。...对于尾随斜杠,Bitbucket是宽容的:无论是否在URL中包含尾部斜杠,都会向请求 https://accountname.bitbucket.io/projectX/提供projectX/index.html...公共和私人存储库和静态网站 使用此功能创建的静态网站就像互联网上的任何其他网站一样 - 任何拥有URL(地址)的人都可以访问和查看您的静态网站。

    3.5K30

    网址命名规则,如何有利于百度收录与SEO排名?

    根据以往的SEO工作经验,另搜索引擎头痛的问题,往往是来自过于复杂的网址结构,它让SEO的效果大打折扣,往往事倍功半。...常见的网址命名规则: 1、网址格式统一 你是否在IIS下,使用过.woff字体的经历,在使用子目录,嵌套子站点的时候,如果配置不当,往往造成网址出现大小写不统一的情况,理论上这种情况,算不同的网址,对SEO...2、斜杠的使用 当你访问一个页面的时候,经常会发现有的URL地址带斜杠,有的不带,如果你的这个地址是目录,建议大家选择启用斜杠,否则它将被识别成页面,影响站点权重。...3、主域的选用 对于首选域的选定,很多小伙伴不并不十分理解,特别是带有3W,和不带3w的主域都可以访问的时候,一定要将其中一个重定向到另一个,值得注意的是,如果系统默认加载index.php,最好也做个重定向...总结:网址命名规则并没有一个标准答案,不同类型的站点,它可能需要不同的网址结构,但某些基础内容,都是想通的,上述内容仅供参考。

    91560

    Python 为什么不用分号作终止符?

    若在一句完整的语句末尾加了分号,然后换行,那么 IDE 一般会提示“Trailing semicolon in the statement”,提示着这个“尾随分号”是多余的。...按我粗浅的理解,尾随分号实际会被当成分隔符,只不过它后面是“空语句”,然后是换行(即终止符)。分隔空语句是无必要的,所以尾随分号就成了多余的。 ?...Python 不用分号作为终止符,大概有如下的原因: 它把缩进和换行当成文法的有效部分,可以表达出完整的语义,不会导致编译时的歧义。...这是最主要的原因,是跟“分号党”的根本区别 不用分号与花括号,但是使用缩进和冒号,这是一脉相承的思路,总体上形成了更高的可读性、简洁性和标准化。...早期硬件有所限制,加分号可以提升解析/编译的速度,但如今障碍已除,某些分号党语言只是在延续 B/C 语言的老传统 对于需要换行的语句,Python 中使用反斜杠(\)来连接,可以理解成它把换行给转义了,

    1.4K30

    修改WordPress分类目录和页面链接以斜杠结尾,附nginx对应的301跳转设置方法

    当 WordPress 的文章固定连接设置为 html 结尾后,WordPress 的分类目录和页面链接将变成以名称结尾的形式,比如 http://zhangge.net/liuyan,而不是以斜杠 /...一直以来也没纠结过这个问题,最近换成百度云加速之后,发现这种形式链接无法被缓存,而免费版的强制缓存项目只有 5 个!找客服问了下,告知要以斜杠结尾,才会识别为目录并开启缓存加速。 ?...搜了下 WordPress 给末尾加上斜杠的方法: ①、插件法:安装 Permalink Trailing Slash Fixer 插件即可。..., $type) {    if ('single' === $type)      return $url;      return trailingslashit($url); } 将以上代码加入到主题...这才是目录的形式嘛! 为了做好 SEO,经验告诉我,有必要将以前末尾不带斜杠的链接都做好 301,跳转到带斜杠的新链接,以免搜索引擎重复收录相同内容,影响权重啥的。

    2.1K40

    flask框架搭建步骤_flask 部署

    路由就是指通过URL定位到的具体python类或者python函数的程序。...路由是使用@app.route('/')来定义的,括号中的字符串/就是路由,也就是指使用 route() 装饰器来把函数绑定到 URL,如下面的定义两个路由: @app.route('/') def index...get_uid(uid):# 参数是必须传递的 return "获取唯一的标识码:"+ str(uid) 唯一的 URL / 重定向行为 重定向行为 / 唯一的 URL的不同之处在于是否使用尾部的斜杠...,如下面两个视图函数: @app.route('/projects/')# 重定向,路由中定义了/,无论请求的URL中是否带/,都可以执行视图函数,如果请求URL中没有带/,浏览器中就做了一次重定向 def...访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。 about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。

    1.4K20

    REST API URI 设计的七准则

    在今天的网站上,URI 设计范围从可以清楚地传达API的资源模型,如: http://api.example.com/louvre/leonardo-da-vinci/mona-lisa 到那些难以让人理解的...REST API 设计人员应该创建 URI,将 REST API 的资源模型传达给潜在的客户端开发人员。在这篇文章中,我将尝试为 REST API URsI 引入一套设计规则。...query] ["#" fragment] 规则#1:URI中不应包含尾随的斜杠(/) 这是作为 URI 路径中最后一个字符的最重要的规则之一,正斜杠(/)不会增加语义值,并可能导致混淆。...更多的API可能会将客户端重定向到末尾没有斜杠的 URI 上,(他们也可能会返回 301 - 用于重新定位资源的 “Moved Permanently”)。...规则#2:正斜杠分隔符(/)必须用于指示层次关系 在 URI 的路径部分的正斜杠(/),用于表示资源之间的层次关系。

    1.6K40

    Express4.x API (三):Response (译)

    /login'); 重定向可以完全的将URL重定向到另一个不同的网站 res.redirect('http://google.com'); 重定向可以使用相对主机的路径,例如,如果你的应用程序是"http...://example.com/admin/post/new",下面将会将它重定向到"http://example.com/admin" res.redirect('/admin') 重定向可以相对于当前的...URL,例如来自"http://example.com/blog/admin/"(注意最后的尾斜杠),下面将重定向到"http://example.com/blog/admin/post/new" res.redirect...('post/new') 如果上面admin最后没有尾斜杠,将会重定向至"http://example.com/blog/post/new" 如果你发现上述行为令人困惑,把路径段看做目录(尾随斜杠)和文件...,他将开始变得有意义 相对路径的重定向也是有可能的,如果你是"http://example.com/admin/post/new",下面将会重定向到"http://example.com/admin/post

    1.8K100
    领券