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

Nginx - URL的微妙差异:Nginx斜杠魔法

请求的URI传递到服务器的方式如下: 如果proxy_pass指令带有URI,当请求传递到服务器时,匹配location的标准化请求URI部分将被指令中指定的URI替换: location /name/...WebSocket代理需要特殊配置,并且从1.3.13版本开始支持。 proxy_pass指令的基本用法:定义代理服务器的协议和地址,并可选择指定URI。...请求中的路径直接附加在 proxy_pass 后指定的 URL 后面。...加 /: 移除匹配部分路径,再将剩余路径附加到 proxy_pass 后的 URL。...实际应用中的考虑 路径一致性:根据后端服务器的路径结构决定是否需要保留或修改请求路径。 避免路径混淆:确保转发后的路径和后端服务能够正确处理对应的 URI。

61200

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

你的API最糟糕的事情莫过于返回一个带有200 OK状态码的错误响应。 这是最差的语义,相反,应该返回一个能准确描述错误类型的有意义HTTP状态码。...优雅地处理尾部斜杠 关于URI是否应该有尾随斜杠/实际上并不是一个值得争论的问题,你只需要选择其中一种方式(即带或不带尾随斜杠),坚持使用它,并在客户端使用错误约定时优雅地重定向。 讲个故事吧!...我所使用的端点看起来像这样: POST: /buckets 当时我非常生气,怎么也想不明白究竟哪里出了问题。最后,原来是因为缺少了尾随斜杠导致服务器出错!...API没有修复,但希望您可以防止消费者遇到此类问题。专业提示:大多数基于网络的框架(Angular、React等)都有一个选项可以优雅地重定向至带或不带尾随斜杠的URL版本。找到那个选项并尽早激活。...因此,在API中应用最佳实践需要采取额外措施。而且大多数时候, 懒惰或缺乏时间意味着你不会付出努力——从而使你的消费者面临一个古怪的API。 解决方案很简单:使用合适工具完成任务。

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

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

    ('http://example.com'); res.location('back'); 带有back参数的的路径带有特殊的意义,它指的是在请求的Referer报头指定的URL,如果没有被指定,它指向..."/" res.redirect([status,] path) 重定向URL来自指定的路径,使用指定的HTTP状态码.如果没有指定状态,状态代码默认为'302 Found' res.redirect(.../login'); 重定向可以完全的将URL重定向到另一个不同的网站 res.redirect('http://google.com'); 重定向可以使用相对主机的路径,例如,如果你的应用程序是"http...URL,例如来自"http://example.com/blog/admin/"(注意最后的尾斜杠),下面将重定向到"http://example.com/blog/admin/post/new" res.redirect...('post/new') 如果上面admin最后没有尾斜杠,将会重定向至"http://example.com/blog/post/new" 如果你发现上述行为令人困惑,把路径段看做目录(尾随斜杠)和文件

    1.8K100

    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

    .gitignore 不生效问题

    以#开头的行用作注释。("\") 对于以哈希开头的模式,请在第一个哈希之前放置反斜杠(“ \”)。 除非使用反斜杠(“ \”)引号,否则将忽略尾随空格。 可选前缀“ !”...txt 斜杠/用作目录分隔符。分隔符可能出现在.gitignore搜索模式的开始,中间或结尾。...尾部的“ /”与内部的所有内容匹配。例如,“ abc/”将目录“ abc” 内的所有文件(相对于.gitignore文件位置)以无限深度进行匹配。 斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录。...则前导斜线不相关 “ foo / *” 匹配 “ foo / test.json”(常规文件),“ foo / bar”(目录),但不匹配“ foo / bar / hello.c”(常规文件) ),因为该模式中的星号与其中带有斜线的...这时候再加入 .gitignore 已经没有效果了,可以直接使用下面的命令,从暂存区中移除 git rm --cached 其中 是文件名或者目录 结果 由于文件并没有纳入

    4.1K21

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

    单纯看“分隔符”与“终止符”,它们都是必须的,然而是否都要用分号来表示呢?这个问题没有达成一致的标准。 Python 中使用了分号作为语句分隔符,但是不用分号作为终止符, 而是用了换行作为终止符。...若在一句完整的语句末尾加了分号,然后换行,那么 IDE 一般会提示“Trailing semicolon in the statement”,提示着这个“尾随分号”是多余的。...按我粗浅的理解,尾随分号实际会被当成分隔符,只不过它后面是“空语句”,然后是换行(即终止符)。分隔空语句是无必要的,所以尾随分号就成了多余的。 ?...Python 不用分号作为终止符,大概有如下的原因: 它把缩进和换行当成文法的有效部分,可以表达出完整的语义,不会导致编译时的歧义。...早期硬件有所限制,加分号可以提升解析/编译的速度,但如今障碍已除,某些分号党语言只是在延续 B/C 语言的老传统 对于需要换行的语句,Python 中使用反斜杠(\)来连接,可以理解成它把换行给转义了,

    1.4K30

    YAML 多行字符串处理

    使用双引号 " 或单引号 ' 虽然可以包含换行符,但需要转义特殊字符(双引号内),并且处理内部引号和长文本时易读性较差:# 使用双引号(可包含换行,但需要转义内部双引号和反斜杠,阅读困难)description...但是,有一些重要的规则和例外:折叠规则: 连续的、非空行会被折叠成一个空格分隔的长行。保留空行: 空行(即完全没有任何字符,包括空格的行)会被保留,并作为换行符输出。空行是重要的分隔符。...行尾反斜杠 \: 如果一行以非转义的反斜杠 \ 结尾,则该行不会折叠到下一行(即该换行符被保留),并且反斜杠会被移除(除非它被转义 \\)。行首空白: 块内的缩进和行首空白会被保留(与 | 相同)。...关于尾随换行符的具体处理,YAML 规范有详细定义,不同解析器实现可能稍有差异,但 - 和 + 的意图是明确的。最安全的做法是明确使用 - 或 + 来表达你的需求。...转义字符: 在 | 和 > 块内,大多数字符都是字面量,不需要转义。双引号 "、单引号 '、反斜杠 \ 等都可以直接书写(除了在折叠块 > 中行尾的 \ 有特殊含义)。

    60510

    flask_study学习笔记

    ,无论请求的url是否带有斜杠都可以执行视图函数,如果请求的是有斜杠的,则浏览器执行了一次重定向。...@app.route('/test/') def test(): return 'test' # 路由中,定义的路由没有以斜杠结尾,但请求的路由以斜杠结尾则会返回not found @app.route...当定义的路由以斜杠结尾,但请求的路由有没有斜杠结尾都可以实现请求。 在路由中定义斜杠,无论请求的url是否带有斜杠都可以执行视图函数,如果请求的是有斜杠的,则浏览器执行了一次重定向。...(原因暂时不清楚) url_for和redirect redirect用于重定向 import json from flask import Flask, make_response, Request,...语法,被封装成了过滤器 例如 ; xxx | safe 禁止转义 在讲一些带有标签的数据传入html文件时,不想进行转义,使用safe xxx | capitalize 单词首字母大写 lower 和

    30910

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

    也就是说当14行的url改变了,也不会影响我的url_for进行函数反转。仍然可以进行访问。 指定url末尾的斜杠 有些url的末尾是有斜杠的,但是有些没有,这实际上是两个不同的url。...时就算不带斜杠,也会被重定向到第一个去。...比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此应该给他重定向到登录页面。...在flask中,重定向是通过flask.redirect(location,code=302)这个函数来实现的,location表示需要重定向到的URL,应该配合之前讲的url_for()函数来使用,code...name,说明没有登录,重定向到登录页面 # 同时使用url_for的方法来进行操作。

    27210

    REST API URI 设计的七准则

    在今天的网站上,URI 设计范围从可以清楚地传达API的资源模型,如: http://api.example.com/louvre/leonardo-da-vinci/mona-lisa 到那些难以让人理解的...当你没有取消引用时,你不应该查看 URI 字符串的内容以获取其他信息。 - Tim Berners-Lee 客户端必须遵循 Web 的链接范例,将 URI 视为不透明标识符。...query] ["#" fragment] 规则#1:URI中不应包含尾随的斜杠(/) 这是作为 URI 路径中最后一个字符的最重要的规则之一,正斜杠(/)不会增加语义值,并可能导致混淆。...更多的API可能会将客户端重定向到末尾没有斜杠的 URI 上,(他们也可能会返回 301 - 用于重新定位资源的 “Moved Permanently”)。...规则#2:正斜杠分隔符(/)必须用于指示层次关系 在 URI 的路径部分的正斜杠(/),用于表示资源之间的层次关系。

    1.6K40

    Go 1.22中的路由提升

    我们进行这些更改是为了继续努力使Go成为构建生产系统的优秀语言。我们研究了许多第三方Web框架,提取了我们认为是最常用的功能,并将其集成到net/http中。...在Go 1.22之前,处理这些请求的代码可能会以以下方式开始: http.Handle("/posts/", handlePost) 具有尾随斜杠的模式将所有以/posts/开头的请求路由到handlePost...如上所示,以斜杠结尾的模式,如/posts/,将匹配以该字符串开头的所有路径。要仅匹配具有尾随斜杠的路径,可以写为/posts/{$}。...保持顺序独立性对我们来说很重要(并且对向后兼容性是必需的),但我们需要比"最长赢"更好的规则。...优先级规则在方法和路径方面完全按照上述方式工作,但为了保持兼容性,我们必须为主机破例一次:如果两个模式在其他方面会发生冲突,且其中一个有主机而另一个没有,那么带有主机的模式优先。

    41310

    Prometheus 基于Python Django实现Prometheus Exporter

    基于Python Django实现Prometheus Exporter 需求描述 运行监控需求,需要采集Nginx 每个URL请求的相关信息,涉及两个指标:一分钟内平均响应时间,调用次数,并且为每个指标提供...空行将被忽略 在一行中,tokens可以由任意数量的空格和/或制表符分隔(如果它们与前一个令牌合并,则必须至少由一个空格分隔)。忽略行收尾随空格。...HELP行可以是任意UTF-8序列字符,如果包含反斜杠 \、 换行符\n字符,需要进行显示转义,形如 \\, \n 如果token为TYPE,则至少需要2个token,第一个token为Metric名称...针对同一个给定的Metric名称,只能存在一种Type。TYPE行必须位于该Metric的第一行数据样本行之前。如果该Metric没有定义对应的TYPE行,则默认TYPE为untyped。...可以是任意UTF-8序列字符,如果包含反斜杠 \、双引号"、 换行符\n字符,需要进行显示转义,形如 \\, \", \n value 代表浮点数,正如Go ParseFloat()所需参数。

    1.7K10

    flask框架搭建步骤_flask 部署

    函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。 把它保存为 hello.py 或其他类似名称。...路由就是指通过URL定位到的具体python类或者python函数的程序。...get_uid(uid):# 参数是必须传递的 return "获取唯一的标识码:"+ str(uid) 唯一的 URL / 重定向行为 重定向行为 / 唯一的 URL的不同之处在于是否使用尾部的斜杠...,如下面两个视图函数: @app.route('/projects/')# 重定向,路由中定义了/,无论请求的URL中是否带/,都可以执行视图函数,如果请求URL中没有带/,浏览器中就做了一次重定向 def...访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。 about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。

    1.4K20

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

    极为不友好,为此,你需要确保网址结构,大小写统一。...2、斜杠的使用 当你访问一个页面的时候,经常会发现有的URL地址带斜杠,有的不带,如果你的这个地址是目录,建议大家选择启用斜杠,否则它将被识别成页面,影响站点权重。...3、主域的选用 对于首选域的选定,很多小伙伴不并不十分理解,特别是带有3W,和不带3w的主域都可以访问的时候,一定要将其中一个重定向到另一个,值得注意的是,如果系统默认加载index.php,最好也做个重定向...4、关键词匹配 对于中文站点,并没有严格要求网址中一定需要包含关键词,如果你是做外贸的,那么需要仔细思考这部分内容。...总结:网址命名规则并没有一个标准答案,不同类型的站点,它可能需要不同的网址结构,但某些基础内容,都是想通的,上述内容仅供参考。

    91560
    领券