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

2020-06-04 10:19:35 +08:00
 AreYou0k
1585 次点击
所在节点    问与答
4 条回复
Dogergo
2020-06-04 10:52:28 +08:00
看 nginx 层的处理,当成一个目录了,如果开了 autoindex,访问的变成了 /text/目录下的 index.html 了,这个文件不存在就做了其他处理
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
2020-06-04 13:38:45 +08:00
是楼主的头像迫使我点开这个问题
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 的方法应该不行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/678497

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX