如何更改 spring 资源列表名称

How to change spring resources list name

我有一个控制器返回我数据库中的所有汽车。它是通过将汽车列表放入Resources(见代码)来实现的。 我希望能够将列表的名称从 'carDTOList' 重命名为“carList”。该怎么做?

public class CarDTO {

    private String id;
    private UserDTO owner;
    private String brand;
    private String model;
    private String color;
    private String plate;
    private String additionals;

@GetMapping("/cars")
public ResponseEntity<?> getAllCars() {
    List<Resource<CarDTO>> cars = StreamSupport.stream(repository.findAll().spliterator(), false)
            .map(car -> assembler.toResource(modelMapper.map(car, CarDTO.class)))
            .collect(Collectors.toList());

    Resources<Resource<CarDTO>> carsResource = new Resources<Resource<CarDTO>>(cars, ControllerLinkBuilder
            .linkTo(ControllerLinkBuilder.methodOn(CarController.class).getAllCars()).withSelfRel());

    return ResponseEntity.ok(carsResource);
}

{ "_embedded": { "carDTOList": [ { "id": "5d5bc8144a8fb83fd42120e1", "owner": { "id": "5d5bc8144a8fb83fd42120de",


如您在响应中所见,它设置为“carDTOList

您可以重构(重命名文件)CarDTO class 到 CarList。应该可以了。

如果要保留CarDTO Java 名称,则利用Jackson 注释更改命名:

@JsonRootName("car")
public class CarDTO {

根据您的配置,当返回一个集合时,将添加一个 List 后缀.. 导致 carList.

您可以使用 Spring 注释:

@org.springframework.hateoas.core.Relation(value = "resource", collectionRelation = "resources")

注释您的 DTO class。所以现在当你 return 一个元素时,它将被称为 resource。如果您 return 列表,它将被称为 resources