为什么在调用不存在的URL时spring返回HAL / HATEOAS响应?

时间:2019-04-19 20:19:15

标签: spring-boot hateoas hal

当我没有为它设置控制器时,我收到来自localhost:8085 / ponds的响应……任何地方都没有映射。

更奇怪的是,当我进入localhost:8085 / ponds时,我可以在应用程序中看到它正在执行SQL命令。

我在网上搜索了此_embedded的来源,并且找到了有关HAL和HATEOS的信息,但是,我没有在任何地方隐式实现这些信息。

我已经在终端中进行了maven全新安装并部署,我看到了:

  

INFO 16328 --- [main] osdrwRepositoryRestHandlerMapping:映射“ {[/ {repository} / {id}],方法= [GET],produces = [application / hal + json || application / json]}”到公共org.springframework.http.ResponseEntity> org.springframework.data.rest.webmvc.RepositoryEntityController.getItemResource(org.springframework.data.rest.webmvc.RootResourceInformation,java.io.Serializable,org.springframework.data.rest。 webmvc.PersistentEntityResourceAssembler,org.springframework.http.HttpHeaders)抛出org.springframework.web.HttpRequestMethodNotSupportedException

     

org.springframework.http.ResponseEntity <   org.springframework.hateoas.Resource>

这是浏览器中的响应:

{
  "_embedded" : {
    "ponds" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8085/ponds"
    },
    "profile" : {
      "href" : "http://localhost:8085/profile/ponds"
    }
  }
}

我上次使用SpringBoot的时间是几个月前,如果我尝试访问未为其编写控制器的链接/映射/ HTML页面,则会得到一个“找不到页面”页面,而不是响应。

我正在使用SpringBoot 2.0.5.RELEASE

我不明白为什么给出响应而不是错误...

所以我评论了

<!--<dependency>-->
    <!--<groupId>org.springframework.boot</groupId>-->
    <!--<artifactId>spring-boot-starter-data-rest</artifactId>-->
<!--</dependency>-->

然后回应消失了。我仍然不明白为什么它使用了ResponseEntity,或者为什么ResponseEntity实际上返回了JSON ...

1 个答案:

答案 0 :(得分:0)

spring-boot-starter-data-rest

不需要这种依赖性。我已将其删除。

https://spring.io/guides/gs/accessing-data-rest/

本指南将引导您完成创建通过基于超媒体的RESTful前端访问关系JPA数据的应用程序的过程。