REST,MVC - 资源的链接创建应该在哪一层发生?



以下是我的场景的抽象案例。

通过/customers/:id终结点发出GET请求后,控制器中的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 中添加了以下方法addSelfLinkaddLink(添加指向另一个资源的链接(,否则,在我看来,它们应该在服务中找到一个位置并在控制器中调用。

最新更新