弹簧靴休息

时间:2021-04-29 16:24:09

标签: spring spring-boot rest

我正在练习使用 Spring Boot 来处理宁静的应用程序

我已经像这样设置了@RestController 和@Entity

@RestController
@RequestMapping(value = "/api")
public class RestControllerCar {
    

    @Autowired
    private CarRepository carRepository;

    @RequestMapping(value = "/cars")
    public Iterable<Car> getCars() {
        return carRepository.findAll();
    }
}

@Entity
public class Car {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String brand, model, color, registerNumber;
    private Integer year, price;
    
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @ManyToMany(mappedBy = "cars")
    private Set<Owner> owners;

    public Car() {
    }

    public Car(String brand, String model, String color, String registerNumber, Integer year, Integer price) {
        super();
        this.brand = brand;
        this.model = model;
        this.color = color;
        this.registerNumber = registerNumber;
        this.year = year;
        this.price = price;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getRegisterNumber() {
        return registerNumber;
    }

    public void setRegisterNumber(String registerNumber) {
        this.registerNumber = registerNumber;
    }

    public Integer getYear() {
        return year;
    }

    public void setYear(Integer year) {
        this.year = year;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Set<Owner> getOwner() {
        return owners;
    }

    public void setOwner(Set<Owner> owners) {
        this.owners = owners;
    }

当我使用邮递员访问 http://localhost:8080/cardatabase/api/cars 时,我会得到一个汽车列表

但即使我去http://localhost:8081/cardatabase/cars,_embedded在顶部

正常吗?

谢谢!!!!

1 个答案:

答案 0 :(得分:0)

您的存储库是否注释了@RestRepository? _embedded 让我想到@RestRepository 为数组提供的输出类型。

@RestRepository 自动创建所有端点。正如@M.Deinum 所指出的那样,使用 data rest starter,如果您将其删除,您将只拥有控制器,而不是由 @RestRepository 生成的控制器。

这里有两个主要选择:

  1. 您没有对存储库进行注释。只是一个实现 JpaRepository 并使用你的控制器的接口
  2. 您仅使用@RestRepository 自动创建的控制器。

或者,您可以在您的项目中安装 swagger2,因此,在您的浏览器上访问文档,您将看到所有可用的端点,这对您来说可能更清楚。 使用 swagger,您还将看到端点的返回类型、参数等。 Swagger 非常容易在项目中安装和使用。 (依赖项,一个注释,它很好.. 用于基本用法)。