Java 使用spring设置restapi

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

我只是想用spring建立一个简单的RESTAPI,什么时候http://localhost:8080/ 我得到了一些尚未定义的JSON响应:

{
  "_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>