以下是我的情况的抽象情况。
在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:addSelfLink
和addLink
(以添加到另一个资源的链接),否则,我认为它们应该在Service中找到位置并在Controller中调用。