【问题标题】:Proper layer/Object for updating a model with a request object使用请求对象更新模型的适当层/对象
【发布时间】:2019-09-19 00:41:02
【问题描述】:

使用 Sprint 我有一个带有以下标头的端点:

@PutMapping("/{productId}")
Product updateProduct(@Valid @RequestBody ProductRequest productRequest) { ....

我应该在哪里将 ProductRequest 中的字段复制到现有产品?在服务?为此使用地图类?使用产品工厂?其他地方?

【问题讨论】:

    标签: spring spring-mvc architecture


    【解决方案1】:

    我认为我们应该使用 Rest/Mvc 控制器层进行以下操作:

    1) 参数验证

    2) 将传入参数(ProductRequest) 映射到服务模型(Product)

    3) 使用服务模型调用服务

    4) 返回结果或错误

    因此,在您的情况下,您应该将 ProductRequest 映射到 Product 并将路径 Product 映射到服务。您可以在本文中找到其中一个经典示例:DTO Conversion

    @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
    @ResponseStatus(HttpStatus.OK)
    public void updatePost(@RequestBody PostDto postDto) {
        Post post = convertToEntity(postDto);
        postService.updatePost(post);
    }
    

    还有一个经验法则是让控制器层尽可能薄。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多