Java 使用spring设置restapi
我只是想用spring建立一个简单的RESTAPI,什么时候http://localhost:8080/ 我得到了一些尚未定义的JSON响应:Java 使用spring设置restapi,java,spring,spring-mvc,spring-restcontroller,Java,Spring,Spring Mvc,Spring Restcontroller,我只是想用spring建立一个简单的RESTAPI,什么时候http://localhost:8080/ 我得到了一些尚未定义的JSON响应: { "_links": { "profile": { "href": "http://localhost:8080/profile" } } } 以下是REST控制器: package com.okta.developer.demo.be
{
"_links": {
"profile": {
"href": "http://localhost:8080/profile"
}
}
}
以下是REST控制器:
package com.okta.developer.demo.beer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collection;
import java.util.stream.Collectors;
@RestController
public class BeerController {
private BeerRepository repository;
public BeerController(BeerRepository repository) {
this.repository = repository;
}
@GetMapping("/")
public String test() {
return "test";
}
@GetMapping("/good-beers")
public Collection<Beer> goodBeers() {
return repository.findAll().stream()
.filter(this::isGreat)
.collect(Collectors.toList());
}
private boolean isGreat(Beer beer) {
return !beer.getName().equals("Budweiser") &&
!beer.getName().equals("Coors Light") &&
!beer.getName().equals("PBR");
}
}
我也不知道附加代理是否是问题的一部分。在您的项目中,2个控制器正在处理路径“/”。
一个控制器是您的BeerController,另一个在您使用Gradle或Maven导入的依赖项中。
以下是名为(spring boot starter data rest)的依赖项,它们会导致此问题:
删除依赖项后,如果您还有其他Spring Web依赖项,则BeerController应该可以工作,如:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
org.springframework.boot
请参见,您的项目中似乎有一个spring boot starter数据rest
依赖项,它提供了默认值responses@AndreiKovrov早就试过了,但是导入后的RepositoryRestResource注释中提到的依赖项…以及BeerController
类中定义的路径不可用。仅当您想要创建超媒体驱动的RESTful Web服务时,才使用RepositoryRestResource
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>