2

我正在使用Spring Data Rest。我可以使用httpie从命令行访问资源:

http :8080/myapp/books

但是如果我尝试访问根 URI

http :8080/myapp

我获得了302 重定向

HTTP/1.1 302 
Date: Wed, 21 Dec 2016 13:30:57 GMT
Location: http://localhost:8080/myapp/
Transfer-Encoding: chunked

在 Firefox 中测试此 url 会将我重定向到http://localhost:8080/myapp/并正确显示资源列表。如果我在 httpie 中添加斜杠:

http :8080/myapp/

我获得资源列表。为什么我必须添加斜杠以避免重定向?有人可以解释一下这种行为背后的逻辑吗?

PS:我正在使用 STS 的Spring Boot运行应用程序。

4

1 回答 1

0

我认为答案是如果你添加一个尾随/它会被理解为一个资源组但没有那个尾随/我们不能这么说,url的最后一部分myapp可能是资源id,所以它需要检查带有id的资源myapp首先,如果它不存在,那么它将把它作为一个资源包/组并通过附加重定向//表示结果将是一个组,但如果没有斜线,它将认为是具有 id 的资源。前任。users/user使用 id 获取用户userusers/获取用户集。因此,如果没有找到任何资源,它将首先检查 id,然后附加 a/并重定向。

有关更多信息,请参阅链接https://softwareengineering.stackexchange.com/questions/186959/trailing-slash-in-restful-api

于 2016-12-21T15:13:39.480 回答