为什么我需要在弹簧数据休息中为root URI的拖延斜线



我正在使用弹簧数据休息。我可以使用httpie从命令行访问资源:

http :8080/myapp/books

,但是如果我尝试访问root 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/

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

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

我认为答案是 如果添加尾声/,它将被理解为资源组,但是没有该尾声/,我们不能说,URL myapp的最后一部分可能是资源ID,因此它需要先检查使用ID myapp的资源如果不存在,则将其作为资源束/组,并通过附加/重定向。/表示结果将是一个组,但是如果没有斜线,它将认为是具有ID的资源。前任。users/user使用ID user获取用户。 users/获取一组用户。因此,如果没有找到任何资源,它将首先检查ID,然后附加/并重定向。

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

相关内容

  • 没有找到相关文章

最新更新