[今天,我与我们的一位团队成员就Controller和Service层中的RESTful API输入的验证进行了大讨论,我觉得这是提出更大论点的糟糕日子。因此,我们有一个具有分层体系结构的spring boot microservice应用程序Controller --> Service --> Repository

参数是在每一层进行验证还是仅在Controller层进行验证,例如,我们具有Controller和POST请求,并且对输入请求主体使用JSR-380验证

Controller:@PostMapping(value = "/", consumes = {"application/json"}, produces = {"application/json"})

public ResponseEntity createConfig(

@NotNull(message = "{error.message.config_detail}")

@RequestBody @Validated Config config) {

return new ResponseEntity<>(configService.create(config.getConfigId(), config.getTaskId()), HttpStatus.CREATED);

}

Config:请求正文public class Config {

@ApiModelProperty(name = "config_id", example = "1", required = true)

@NotNull(message = "{error.message.config_id}")

private Long configId;

@ApiModelProperty(name = "task_id", example = "11", required = true)

@NotNull(message = "{error.message.task_id}")

@Min(value = 0, message = "{error.message.task_id}")

@Max(value = 9999, message = "{error.message.task_id}")

private Integer taskId;

// bunch of addition fields with validations

}

如果验证成功,则使用Service中的某些属性调用Config方法>

服务:public Detail create(@Valid @NotNull Long configId, @NotNull Integer taskId) {

// some business logic to convert to entity and saving to database

return repository.save(entity));

}

因此,如果我们看到上面的代码,则在Controller和Service处进行相同的验证,因此我认为无需在Service层进行验证,请在控制器层执行验证,并且如果输入错误然后向用户抛出400或500。 但是团队中的另一个人也建议在每个块中对块中使用的内容进行验证,以使每段代码都是安全的(专注于单元而不是集成路径)。]

我知道在这种情况下我可能是错的,但是仍然无法理解每一层的验证(我同意无效检查,因此建议在每个级别进行验证的方法Controller --> validation call service

Service ---> validation and call business

Business ---> validation and call repository

Repository --> save根据我的说法,

但是首选的验证方式是什么?如果Controller输入是有效的,请调用Service并执行业务逻辑并调用Repository。如果我错了,请纠正我,以便我可以遵循推荐的模式

今天,我与我们的一位团队成员就控制器和服务层中的RESTful API输入的验证进行了广泛的讨论,我觉得这是提出更大论点的糟糕日子。所以我们有一个...

api分层内部外部 spring_java - Spring boot restful API分层架构验证 - SO中文参考 - www.soinside.com...相关推荐

  1. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】05、Shiro集成

    1.POM文件中加入Shiro和fastJSON依赖 <dependency><groupId>org.apache.shiro</groupId><arti ...

  2. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】04、统一处理异常...

    本节讨论如何使用Spring的异常处理机制,当我们程序出现错误时,以相同的一种格式,把错误信息返回给客户端 1.创建一些自定义异常 public class TipsException extends ...

  3. Spring boot restful api 方法参数 BindException 异常处理

    BindException位于org.springframework.validation中 客户端 发起接口请求,Controller在接收的参数在进行绑定注解校验规则时出现异常,会抛出  Bind ...

  4. 构建Spring Boot RESTful服务+ Spring Boot执行器

    总览 什么是REST? REST(代表状态转移)是Web构建的体系结构样式,已成为用于Web应用程序的标准软件设计模式 . 代表性国家转移一词最早由REST的发起人,HTTP规范的主要作者之一Roy ...

  5. Spring Boot Restful框架搭建和使用【持续更新中】

    2019独角兽企业重金招聘Python工程师标准>>> 1 Spring Boot Restful框架搭建 项目源码地址 2 SpringBoot框架使用技巧记录 2.1 pagea ...

  6. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  7. 一文透析 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  8. Spring Cloud与微服务学习总结(8)——Spring Boot、微服务架构和大数据治理三者之间的故事

    前言 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如 ...

  9. Spring Boot 实现苹果支付同步验证

    Spring Boot 实现苹果支付同步验证 代码 苹果返回相应状态码 代码 package com.yuezhi.controller.pay;import java.io.BufferedOutp ...

最新文章

  1. ES6 一些常用使用
  2. python的类的super()
  3. ThinkPhp学习13
  4. 8086汇编 贪吃蛇 源代码
  5. Java-n个人报数
  6. Android之自定义 ActionBar 上的菜单(Menu)文字颜色
  7. 操作系统——文件目录
  8. PC端动态视频背景引导页(非自适应)
  9. 【python】python的环境搭建
  10. CentOs7.3 搭建 Solr单机服务
  11. poatman32位下载_Postman.dll下载|Postman.dll下载官方版【32位|64位】-太平洋下载中心...
  12. RAID磁盘阵列的部署(red hat 6.5)
  13. AWVS14.7破解版免费获取
  14. VM296:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (anonymous)
  15. 星期一到星期日的英文_缩写_读音_巧记方法
  16. AOSP添加Google Apps(Open Gapps)构建并刷入Pixel
  17. c语言写一个电脑程序,C语言实现电脑关机程序
  18. 1.0、Python概述
  19. Ubuntu 局域网通信工具之信使(iptux)安装及自动隐藏的解决方法
  20. Go 语言 入门 基于 GoLand 2023.1 创建第一个Go程序

热门文章

  1. Microsoft加入量子计算的竞争
  2. 视频监控PPP项目投资建设和运营模式分析
  3. [转载]安装Oracle11gR2先决条件检查失败的详细解决处理过程
  4. Elasticsearch之CURL命令的version控制
  5. webGIS(离线版)研究路线归总
  6. 写在我的第一百篇博文
  7. 未来计算在“云-端”
  8. 【学习笔记】MySQL 数据备份与恢复
  9. 【整理】内向交货(Inbound Delivery)
  10. SAP报表开发工具 Report Painter