gpt4 book ai didi

java - 在 Restful Web 服务中正确使用 DTO

转载 作者:行者123 更新时间:2023-12-02 05:08:08 25 4
gpt4 key购买 nike

我正在使用 Spring 框架开发一个 Restful Web 服务。我有一些关于如何在我的项目中正确使用 DTO 的问题。

首先,我看到了很多关于使用 DTO 的代码示例,并且总是存在与实体的一对一映射。对于 User 实体,我们有 UserDto,对于 Country,我们有 CountryDto 等等。我认为这不灵活根本不。对于每项服务,我都需要两个 DTO 用于输入和输出。这样可以吗?

如果我为每个服务定义两个 DTO,我可以使用请求和响应后缀来命名它们吗?例如,对于 createUser 服务,我有两个名为 CreateUserRequestCreateUserResponse 的 DTO 对象。

有些服务没有输出(只是状态代码)或输入(只是 URL 中的 ID)。我是否应该为它们定义一个空的 DTO?如果我在这些场景中不定义 DTO,就会有点困惑,因为有时您为服务定义两个 DTO,有时只定义一个。

我是否也应该将 /users/{id} 之类的路径变量映射到 DTO 对象?例如代替:

@GetMapping("/users/{id}")
public ResponseEntity getUser(@PathVariable(value = "id") Long id)

做类似的事情:

@GetMapping("/users/{id}")
public ResponseEntity getUser(@PathVariable(value = "id") GetUserRequest request)

最佳答案

遵循这个模式:

@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> getUser(@PathVariable long id) {
ResponseEntity<User> response = null;
try {
User user = userService.getUser(id);
response = new ResponseEntity<User>(user, HttpStatus.OK);
} catch (ApplicationException ex) {
response = new ResponseEntity<User>(HttpStatus.NOT_FOUND);
}
return response;
}

不要创建这样的网址:/users/{id}

创建一个像这样的 url - /{id} - 这将提供更多抽象。

关于java - 在 Restful Web 服务中正确使用 DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com