
知遇网spring boot 前后端分离项目
本文地址:
作者:知遇网-黄明;最后修改日期:2019-4-15
本文中所有代码在svn目录下
spring boot开发规范
- 一、 ResTful API 风格
-
- 二、常见的文本、邮件、不能为空等,spring boot自带注解可以快速实现:@Valid注解和BindingResult验证请求参数的合法性并处理校验结果。(此块内容在开发中应用较为广泛,认真学习)
- 例子:创建用户时,接口参数中用户名不能为空。@NotBlank(message = "用户名不能为空")
- 常见的注解如下图:
- 总结:使用此方式,代码精简、错误码与消息能够统一维护、返回客户端的状态更加明确,是符合RestFulApi的最佳实践。
- 三、默认的校验注解只能够满足一小部分校验要求。例如需要校验一个字段是否唯一,就无法通过默认的注解完成。还有可能有更多的复杂校验逻辑,比如西仓项目需要校验一个询价单中所有的物料是否已经报价等(此处的开发很关键,每个项目都有大量这样的代码)
- 总结:使用此方式,代码精简、错误码与消息能够统一维护、返回客户端的状态更加明确,是符合RestFulApi的最佳实践。
- 四、 定义全局的异常处理方法,避免异常未经处理直接暴露给前端,前端无法处理未知错误的异常,经常给客户造成系统bug。(此处很关键,在日常开发中不需要程序员在此处编写逻辑代码,但是需要理解实现原理,以及重视对异常的处理,方便在一些大型项目中重构我在此封装的方法。)
- 总结:如postman测试结果找不到此路由本来系统返回的是status 404状态,但通过重构全局的异常方法,将所有http错误状态统一返回status为500服务器内部错误状态(返回的status同样保留系统原始异常抛出的状态方便程序员定位错误原因),方便前端获取此状态后做统一的判断处理。避免由于系统开发造成的未知bug,引起前端做无状态的处理或者处理起来容易遗漏。
- 五、开发过程中需要注意如数据库密码、用户名等可配置信息请存放在配置文件中,读取配置文件参数,配置类在包config/DemoConfig.java(根据需求新增新的配置类)下面书写。配置文件 统一使用yml的方式,并且书写四个yml配置文件,用于不同环境下面的参数书写。
- 六、注解@JsonView的使用,有时候我们希望在不同的请求中隐藏一些字段。可以用@JsonView控制输出内容。
- 七、使用前后端分离开发的项目,需要定义统一的前置路由规范
- 八、代码逻辑必须写在service层,除非极为特殊情况,可以将少量逻辑放在controller
- 九、SpringBoot Web项目的参数绑定:URL传参及默认参数设置
- 第一种情况:(参数类型必须书写包装类型)
- 第二种情况:
- 第三种情况:
- 第四种情况:
- 十、理解spring boot 自带tomcat
- 1.明白是哪一个依赖让我们使用了springboot自带的tomcat
- 2.2 添加servlet-api依赖:
- 2.3 修改启动类,并重写启动方法
- 3.测试操作是否成功
- 十一、AOP切面的理解与应用
- 使用AOP实现 http请求中验证http签名
- 使用AOP完成sql注入的筛选
- 十二 统一日志管理
boot开发规范)
一、 ResTful API 风格
网上博客地址:
HTTP方法
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新全部资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新部分资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
响应状态码
100~199:信息状态码,代表请求已被接受,需要继续处理。
200~299:成功状态码,代表请求已成功被服务器接收、理解、并接受。
300~399:重定向状态码,代表需要客户端采取进一步的操作才能完成请求。
400~499:客户端错误状态码,代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
500~599:服务器错误状态码,代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
特别注意几个常用的状态码:
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
400 1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
2、请求参数有误。
500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
二、常见的文本、邮件、不能为空等,spring boot自带注解可以快速实现:@Valid注解和BindingResult验证请求参数的合法性并处理校验结果。(此块内容在开发中应用较为广泛,认真学习)
例子:创建用户时,接口参数中用户名不能为空。@NotBlank(message = “用户名不能为空”)
提示:在请求方法的字段上加上@valid注解时,以上