数据校验

SpringBoot之参数接收与校验

血红的双手。 提交于 2020-02-03 04:28:16
参数校验对于我们Web开发是非常重要的。第一,作为服务端的开发者,如果你的参数校验写的足够规范是可以大大提高前后端协同开发的开发效率的,从而为公司及自己大大节约时间成本以及经济成本。第二,参数校验对于保护Web里面的机密数据和机要信息也是非常重要的。校验的代码不能直接写在控制器里。控制器主要是用于承接视图层与服务层之间的桥梁,不是用来编写主要的业务逻辑的,也不是用来写大量的校验的代码的。本文要介绍的参数校验为注解校验的方式。 参数接收 我们要去做参数校验首先要学习的是如何在控制器里能够方便的接收到参数。参数主要分两大类,一类是通过url传递过来的参数,另一类是通过post的body里传递过来的参数。 获取URL路径中的参数和查询参数 url传递的参数也分两种,一种是在路径里的参数,如下面代码中的 id1 。一种是查询参数,也就是?后面的参数,如下面代码中的 name2 。路径里的参数通过注解 @PathVariable 来接收,查询参数可以不用注解,也可以通过加 @RequestParam 来接收。当参数名与方法中接收参数的参数名不一致时,可以通过在注解后面加name参数来映射。 @GetMapping ( value = "/test/{id1}" ) public String test ( @PathVariable ( name = "id1" ) Integer id ,

Spring Boot 之:接口参数校验

天大地大妈咪最大 提交于 2020-02-01 18:04:11
Spring Boot 之:接口参数校验,学习资料 网址 SpringBoot(八) JSR-303 数据验证(写的比较好) https://qq343509740.gitee.io/2018/07/24/Spring%E5%85%A8%E5%AE%B6%E6%A1%B6/SpringBoo2.x/SpringBoot%EF%BC%88%E5%85%AB%EF%BC%89%20JSR-303%20%E6%95%B0%E6%8D%AE%E9%AA%8C%E8%AF%81/ spring-boot入门之二——验证、AOP日志、异常处理 https://blog.51cto.com/mazongfei/2134465?source=dra @Validated 表示开启数据有效性校验,添加在类上即为验证方法,添加在方法参数中即为验证参数对象。(添加在方法上无效) 在controller层的参数校验可以分为两种场景: 单个参数校验:当处理GET请求时或只传入少量参数的时候,我们可能不会建一个bean来接收这些参数,就可以直接在controller方法的参数中进行校验。 实体类参数校验:当处理post请求或者请求参数较多的时候,我们一般会选择使用一个bean来接收参数,然后在每个需要校验的bean属性上使用参数校验注解。 出处:http://www.hellojava.com/a/82790

Vue.js 组件编码规范

倾然丶 夕夏残阳落幕 提交于 2020-01-31 05:31:31
Vue.js 组件编码规范( 最下文附有本人写的demo地址 ) 目标 本规范提供了一种统一的编码规范来编写 Vue.js 代码。这使得代码具有如下的特性: 其它开发者或是团队成员更容易阅读和理解。 IDEs 更容易理解代码,从而提供高亮、格式化等辅助功能 更容易使用现有的工具 更容易实现缓存以及代码包的分拆 本指南为 De Voorhoede 参考 RiotJS 编码规范 而写。 目录 将 this 赋值给 component 变量 使用组件名作为样式作用域空间 对组件文件进行代码校验 基于模块开发 始终基于模块的方式来构建你的 app,每一个子模块只做一件事情。 Vue.js 的设计初衷就是帮助开发者更好的开发界面模块。一个模块是应用程序中独立的一个部分。 怎么做? 每一个 Vue 组件(等同于模块)首先必须专注于解决一个 单一的问题 , 独立的 , 可复用的 , 微小的 and 可测试的 。 如果你的组件做了太多的事或是变得臃肿,请将其拆分成更小的组件并保持单一的原则。一般来说,尽量保证每一个文件的代码行数不要超过 100 行。也请保证组件可独立的运行。比较好的做法是增加一个单独的 demo 示例。 Vue 组件命名 组件的命名需遵从以下原则: 有意义的 : 不过于具体,也不过于抽象 简短 : 2 到 3 个单词 具有可读性 : 以便于沟通交流 同时还需要注意: 必须符合

0458-Hive数据类型校验问题分析

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-28 08:49:18
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1 文章编写目的 使用Hive时大家都会遇到数据类型校验的问题,相比传统关系型数据库会严格要求数据的Schema,数据的列数、每一列的字段类型都有严格的规定,因此数据的存储必须按照定义的Schema格式来存储。而Hive数据库对数据格式及具体的内容并不关心,只有在数据被读出时才会与定义的Schema进行转换。那这个时候就会出现数据类型转换的问题,本篇文章Fayson主要分析下如何查找表中类型转换错误的数据以及Hive对空值和NULL的处理。 测试环境 1.RedHat7.2 2.CM和CDH版本为5.15.0 2 测试数据准备 建表语句如下: create table test_null ( id int , age string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE ; (可左右滑动) 测试数据如下: [ root@cdh2 ~ ] # vim test1 . dat 1 , 23 2 , 24 c 3 ,

django之form校验&后台管理

僤鯓⒐⒋嵵緔 提交于 2020-01-27 15:54:37
django-form表单数据校验 #form 数据校验 class StudentForm(forms.Form): name = forms.CharField(min_length=2, max_length=10,required=True) #校验长度、必填项 phone = forms.CharField(min_length=11, max_length=11) money = forms.FloatField(required=False) #非必填 def clean_phone(self): #钩子 phone = self.cleaned_data['phone'] if models.Student.objects.filter(phone=phone): raise ValidationError('手机号已存在') return phone def student(request): stu_form = StudentForm(request.POST) #获取接口入参数据 if stu_form.is_valid(): #校验是否合法 print('clean_data', stu_form.cleaned_data) #返回的是字典类型 models.Student.objects.create(**stu_form.cleaned_data)

hibernate-validate(后台校验)

与世无争的帅哥 提交于 2020-01-27 00:42:18
6.5.hibernate-validate 刚才虽然实现了注册,但是服务端并没有进行数据校验,而前端的校验是很容易被有心人绕过的。所以我们必须在后台添加数据校验功能: 我们这里会使用Hibernate-Validator框架完成数据校验: 而SpringBoot的web启动器中已经集成了相关依赖: 6.5.1.什么是Hibernate Validator Hibernate Validator是Hibernate提供的一个开源框架,使用注解方式非常方便的实现服务端的数据校验。 官网:http://hibernate.org/validator/ hibernate Validator 是 Bean Validation 的参考实现 。 Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint(约束) 的实现,除此之外还有一些附加的 constraint。 在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。 6.5.2.Bean校验的注解 常用注解如下: Constraint 详细信息 @Valid 被注释的元素是一个对象,需要检查此对象的所有字段值 @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为

django项目表单校验

安稳与你 提交于 2020-01-26 21:09:56
django项目表单校验 校验通常使用用来对用户输入和输入规范的比较。form表单提供给开发者和使用者更好的交互体验。但是往往用户提交的内容并不让人满意,所以需要校验来限制form表单提交内容的格式和内容。基于实现的原理,我们把校验分为: 前端校验:写在html上,用来对前端input进行校验,编写简单,直观。但是如果有一定技术的用户绕过页面进行提交,就容易发生问题。 后端校验:写在视图函数保存数据的部分,在保存数据到数据库或者对数据进行判断之前,进行校验,这样校验,比较复杂,但是安全程度高,大部分前后端校验都有。 前端校验 form表单校验onsubmit的值是true还是false js当中定义对应的函数进行判断 后端校验 django为开发者提供了完整的后端校验模块,这个模块叫forms类。 form表单定义步骤: 创建forms文件(在app下) 编写form类 在视图当中调用form类 在前端使用form类 注意 : form表单提供了html代码,但是需要保证html的灵活性 form表单类不会生成form标签获取其他父级标签(ul,table), 同样不会生成提交按钮,所以在使用form类生成html的时候需要如下写 form表单字段属性 widget error_messages 校验的流程: 1、创建表单实例 2、将请求数据出入表单实例 3、发起校验 4

Mongoose 数据校验

泪湿孤枕 提交于 2020-01-23 13:58:40
什么是mongoose数据校验 用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证 mongoose里面定义Schema:字段类型,修饰符、默认参数 、数据校验都是为了数据库数据的一致性 Schema,为数据库对象的集合,每个schema会映射到mongodb中的一个collection,定义Schema可以理解为表结构的定义 Mongoose内置的校验参数 代码演示,首先还是有个db.js(用于连接数据库)和users.js(操作users集合的schema模块)还有app.js const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/eggcms', { useNewUrlParser: true }, (err) => { if(err){ return console.log(err); } console.log('数据库连接成功') }); module.exports = mongoose let mongoose = require('./db') let UserSchema = mongoose.Schema({ name: { type: String }, age: { type: Number }, status:

编码的简单总结

被刻印的时光 ゝ 提交于 2020-01-23 01:06:29
说明 下面对于各种编码分类并不完全对,仅仅为了便于比较总结记忆 编码的前缀也不是严格非要那样,为了在碰到时,或许可以一眼看出这是哪种编码 对于编码方式没有详细解释,只是简短的大概说明,关于编码具体过程,网上有很多资料 utf编码有大小端的问题 https://blog.csdn.net/byf0521hlyp/article/details/80365045 base家族 https://blog.csdn.net/lili13897741554/article/details/82177472 字符及网络上常用编码 编码 目的 前缀或特点 编码形式 常见或特殊记忆 url编码 对ascii中的一些可打印字符进行编码 前缀% 以%为前缀,其后是字符的两16进制的ascii码 %20空格 %00空字节 %25百分号 +也代表url的空格 html编码 为在html文档中安全的使用某些字符 &或&#或&#x 后跟字符10进制的ascii码,&#x为前缀,后跟字符的16进制的ascii码 "为&quot或&#34或&#x22 >为&gt <为&lt 16进制编码 对二进制数据进行16进制编码 base64 对二进制数据进行编码,用来将非ASCII字符的数据转换成ASCII字符 末尾经常出现= 大写字母A~Z,小写字母a~z,数字0~9以及"+","/"及用来填充的= base32

JSON解析器之json schema校验及代码实现

坚强是说给别人听的谎言 提交于 2020-01-22 18:50:59
项目有个业务需要对JSON格式的数据校验,需要一些必要字段的验证,实现一个JSON解析器。所以学习了json schema的语法和解析器的实现。 本篇是先说通用的JSON验证,也就是json schema和在java代码中的校验使用。 json schema是什么 json schema实际上就是一个JSON文件,文件内容是对JSON数据的结构及内容的约束,就像是xml文件的xsd文件对xml的验证。 先看一下简单的schema内容 1 { 2 "$schema": "http://json-schema.org/draft-07/schema#", 3 "title": "这是个标题", 4 "description": "校验模板内容json格式", 5 "type": "object", 6 "properties": { 7 "name": { "type": "string" }, 8 "credit_card": { "type": "number" }, 9 "job_arr": { 10 "type": "array", 11 "items": { 12 "type": "string" 13 } 14 }, 15 "billing_address": { 16 "type": "object", 17 "properties": { 18 "selfId": {