V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
AreYou0k
V2EX  ›  问与答

调用接口 api 后面加/和不加有啥区别? 比如 v2ex.com/text/, 我写成 v2ex.com/text 这样后接口被重定向了, 状态码是 301. 这个是什么原因呢?

  •  
  •   AreYou0k · 2020-06-04 10:19:35 +08:00 · 1702 次点击
    这是一个创建于 1640 天前的主题,其中的信息可能已经有所发展或是发生改变。
    4 条回复    2020-06-04 13:48:00 +08:00
    Dogergo
        1
    Dogergo  
       2020-06-04 10:52:28 +08:00 via Android
    看 nginx 层的处理,当成一个目录了,如果开了 autoindex,访问的变成了 /text/目录下的 index.html 了,这个文件不存在就做了其他处理
    HarryQu
        2
    HarryQu  
       2020-06-04 11:22:29 +08:00
    跟 Nginx 的配置有关,v2ex 具体配置不清楚。举个其他的例子,访问一个网址,网址以 / 结尾,没有匹配其他 location 时,如果 Nginx 进行了以下配置:

    location / {
    try_files $uri $uri/ /index.html;
    }

    上述配置中的 try_files 首先匹配文件,如果文件不存在。会查看是否存在同样命名的目录,如果存在目录,会查找该目录下是否存在 index.html 。如果上述条件都不满足,会匹配根目录的 /index.html 。
    m0cha
        3
    m0cha  
       2020-06-04 13:38:45 +08:00 via iPhone
    是楼主的头像迫使我点开这个问题
    Vegetable
        4
    Vegetable  
       2020-06-04 13:48:00 +08:00
    不止 nginx,trailing slash 在后端框架大多是有一些配置的。

    https://docs.djangoproject.com/en/dev/ref/settings/#append-slash
    https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
    https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/PathMatchConfigurer.html#setUseTrailingSlashMatch-java.lang.Boolean-

    就是说如果你设置的 url 带了 /,但是用户没带,会自动 redirect 到你的带 /的地址。
    POST 、PUT 等带有 body 的方法应该不行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2702 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:26 · PVG 20:26 · LAX 04:26 · JFK 07:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.