为什么我需要在Spring Data Rest中为根URI设置尾部斜杠?

时间:2016-12-21 13:37:41

标签: spring spring-data-rest httpie

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

http :8080/myapp/books

但如果我尝试访问根URI

http :8080/myapp

我获得了302 redirection

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

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

添加一个尾部斜杠
http :8080/myapp/

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

P.S。:我正在Spring Boot使用STS运行应用程序。

1 个答案:

答案 0 :(得分:0)

我认为答案是  如果您添加一个尾随/,它将被理解为一个资源组但没有这个尾随/我们不能这么说,网址myapp的最后一部分可能是资源ID,因此,如果资源不存在,则首先需要检查标识为myapp的资源,然后将其作为资源包/组进行重新定向,并通过附加/进行重定向。 /表示结果将是一个组,但如果没有斜杠,它将被视为具有id的资源。 防爆。 users/user提取ID为user的用户。     users/获取用户集。因此,如果它没有找到任何资源,它将首先检查id,然后附加/并重定向。

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