实习的第二个项目开发总结

第二次项目开发总结

一).前后端的数据交互统一使用json格式**

前端传递参数使用json格式,后台需要使用@RquestBody注解来接收json格式的

参数,并将json格式装换为java对象。

注意点:

​ 1).在http协议中默认的数据传送格式为application/x-www-form-urlencode格式.

传送数据格式:

pageNum=1&pageSize=1&labelId=&assetNumber=0000

​ 2).@RequestBody只能解析application/json类型的数据,不能解析key-value类

​ 型的数据。

​ 传递key-value的数据会报错:

"Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported"

传送数据格式

{
	"pageNum":"1",
	"pageSize":"5",
	"labelId":"",
	"assetNumber":"0000"
}

3).使用@RquestParam注解可以解析application/form-data和application/x-

​ www-form-urlencode类型的数据

​ content-type = application/form-data,

传送数据格式:

Content-Disposition: form-data; name="pageNum"

1
------WebKitFormBoundary7MA4YWxkTrZu0gW--,
Content-Disposition: form-data; name="pageNum"

1
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="pageSize"

5
------WebKitFormBoundary7MA4YWxkTrZu0gW--,
Content-Disposition: form-data; name="pageNum"

1
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="pageSize"

5
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="labelId"


------WebKitFormBoundary7MA4YWxkTrZu0gW--,
Content-Disposition: form-data; name="pageNum"

1
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="pageSize"

5
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="labelId"


------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="assetNumber"

0000
------WebKitFormBoundary7MA4YWxkTrZu0gW--

​ 4.Controller的方法中只能使用一个@RequestBody来获取参数。

二).@Validated和BindingResult的使用**

​ 前台参数检验可以使用@validated注解来检验参数传入格式是否符合规范,通

​ 过 BindingResult对象来获取错误信息,@Valiated配合BindingResult使用,

​ BindingResult要跟在@Valiated后边。

注意点:

​ 1).使用@Valiated时,如果传入参数不符合符合规范,程序抛出异常,使用

​ BindingResult可以手动的处理异常,通过hasErrors()判断参数是否错误

​ hasErrors()返回一个boolean值。

if (bindingResult.hasErrors()) {
                baseResponse.setCode(CommonConstants.FAILED_CODE);
                baseResponse.setMsg(bindingResult.getFieldError().getDefaultMessage());
                return baseResponse;
            }

三).使用PostProSql数据库连接

参考:https://www.cnblogs.com/Auge/p/11819876.html

1).如何建表。

​ 通过序列,设置表的id自增,通过创建函数,定义触发器,自动生成时间戳。

四).使用git协作 .iml文件不要提交到远程库中

五).idea安装LomBok插件,使用@Data注解

​ 注意点:

​ 1). 使用@Data注解,必须下载Lombok插件。

​ 2).使用@Data注解,在编译源码时自动生成setter、getter、toString、

​ hashCode方法。

六).关于微服务的注册中心的问题

​ 在团队开发中由项目负责人将注册服务注册到一个服务器上,开发人员使用同

​ 一个注册中心服务地址,在本地电脑上运行程序,将各自模块的服务注册到

​ 注册中心,实现服务的共享调用。

注册中心的作用:实现服务之间的调用。

七).微服务中使用浏览器访问单个服务的问题

前端与后台的访问,其实就是浏览器与服务器之间访问的问题。

​ 我们在idea中开发程序,本地电脑就充当一个服务器,作为应用程序的运行

​ 环境,每个服务之间通过端口号进行区分,浏览器访问资源时,通过服务器

​ 地址(本地电脑地址 :locallhost/127.0.0.1)找到对应的应用程序入口,通

​ 过端口号找到对应的服务。

例如:

​ 标签模块端口号:20221

​ 用户模块端口号:10221

http://localhost:20221/locationLabel/criteriaPage
http://localhost:10221/admin/user/userPage

八).微服务开发构建公共模块

​ 使用微服务开发时,我们可以将其他模块都要使用到的类和方法等共同使用

​ 的数据放在一个公共服务模块中,在各个模块中引入这个公共模块的maven

​ 依赖,这样就实现了代码了复用,解决了代码的冗余问题。

九).请求资源时使用RestFul的url风格

​ RestFul的定义及使用

​ 参考:https://blog.csdn.net/qq_38941937/article/details/89145283

https://blog.csdn.net/DingnanDean/article/details/79673708

restful: Representational Status Transfer (表现层状态转换)

​ 添加一个用户:PostMapping ("/user")

​ 删除一个用户:DeleteMaping("/user/{id}")

​ 修改一个用户: PutMapping("/user/{id}")

​ 查找一个用户:GetMapping("/user{id}")

通过请求的方式(post、delete、put、get)来区分请求的操作,实现

资源的定位。

十).条件分页查询和非条件查询在一定条件下可以使用同一个接口

​ 可以封装一个分页查询对象,该对象包含pageNum,pageSize和查询条件。

​ 构造查询sql语句时判断查询条件是否为空。

十一).打印异常信息

​ e.getMessage()

十二).批量删除内部抛出异常

​ 在删除循环体中,若删除失败抛出new Exeception("异常描述"+删除异常的数

​ 据id).

金麟岂能忍一世平凡 飞上了青天 天下还依然
原文地址:https://www.cnblogs.com/Auge/p/11821538.html