以下是我的情况的抽象情况。

GET端点上发出/customers/:id请求后,控制器中的Request Handler会从服务中调用一个函数,该函数返回具有指定ID的Customer。之后,在控制器中,将收到的Customer转换为CustomerResourceDTO

    @GetMapping("customers/{id}")
    public ResponseEntity<CourseResourceDTO> getSingleCustomer(@PathVariable int id) {
        Customer customer = customerService.getSingleCustomer(id);
        CustomerResourceDTO customerResourceDTO = new CustomerResourceDTO(customer);
        return new ResponseEntity<>(courseResourceDTO, HttpStatus.OK);
    }


并且在CustomerResourceDTO构造函数中,还将创建链接。

@Getter @Setter
public class CustomerResourceDTO extends ResourceSupport {
    String firstName;
    String lastName;
    public CustomerResourceDTO (Customer customer) {
        this.firstName = customer.firstName;
        this.lastName = customer.lastName;
        add(new Link("https://linkToSelf").withSelfRel());
    }
}


在DTO /资源创建中设置链接是一种好习惯,还是应该将其委派给另一个类/层?

最佳答案

从丰富的域模型角度来看;我在DTO中添加了以下方法来扩展ResourceSupport:addSelfLinkaddLink(以添加到另一个资源的链接),否则,我认为它们应该在Service中找到位置并在Controller中调用。

10-06 00:58