苍穹外卖day01
今天是写外卖的第一天,昨天主要就下载了下资料,并且配置了前端环境后端环境
我用接口测试没有用黑马的yapi 用的是apifox 也挺好用的 推荐!!!!!
今日完结任务:
- 新增员工接口
- 分页查询
- 启用禁用员工账号
- 分类管理
- 其他补充
1.新增员工
在新增员工这里用到了一个ThreadLocal
我们在spring后端发起的每一个请求,都是一个独自的线程
线程安全性: ThreadLocal 本身为每个线程提供独立的变量副本,因此是线程安全的,但需确保不同线程之间不会错误地修改对方的数据。
在使用后必须remove该线程,不然可能会造成内存泄漏
2.分页查询
运用了pagehelper插件实现分页查询,这样就不用在sql中再写limit了
在xml中写sql语句时,利用分页插件实现分页查询,这里使用了动态sql <where> 标签会智能处理:只有当至少有一个条件满足时,才会插入 WHERE 关键字会自动删除条件开头多余的 AND 或 OR所以无论哪个条件满足,生成的 SQL 都是正确的
还有一点小小的问题, <if test="name != null and name != ''"> 判断空得是'' 不能是' '
3.启用禁用员工账号一点小细节
parameterType 是 MyBatis XML 映射文件中的一个重要属性,用于指定传入 SQL 语句的参数类型。
基本作用: parameterType 告诉 MyBatis:这个 SQL 语句将会接收什么类型的参数。
4.分类管理接口
和员工管理的接口很像crud
5.补充
1.http
请求简单介绍
对于http协议
请求协议:浏览器将数据以请求格式发送到服务器。包括:请求行、请求头 、请求体
get请求只有请求行和请求体
post请求则是三个都有
1)请求行:请求方式、资源路径、协议/版本组成(之间使用空格分隔)
2)请求头:
Host | 表示请求的主机名 |
User-Agent | 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko |
Accept | 表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有; |
Accept-Language | 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页; |
Accept-Encoding | 表示浏览器可以支持的压缩类型,例如gzip, deflat |
Content-Type | 请求主体的数据类型 |
Content-Length | 数据主体的大小(单位:字节) |
偶尔还带token
3)请求体:则是post请求里面带的参数
2.响应
响应几乎是一样的:响应行,响应头, 响应体
1)响应行: 协议及版本、响应状态码、状态码描述
2)响应头:
Content-Type | 表示该响应内容的类型,例如text/html,image/jpeg |
Content-Length | 表示该响应内容的长度(字节数); |
Content-Encoding | 表示该响应压缩算法,例如gzip ; |
Cache-Control: | 指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒 ; |
Set-Cookie: | 告诉浏览器为当前页面所在的域设置cookie |
3)响应体 :响应数据
状态码分类 说明
1xx 响应中 --- 临时状态码。表示请求已经接受,告诉客户端应该继续请求或者如果已经完成则忽略
2xx 成功 --- 表示请求已经被成功接收,处理已完成
3xx 重定向 --- 重定向到其它地方,让客户端再发起一个请求以完成整个处理
4xx 客户端错误 --- 处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx 服务器端错误 --- 处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等
2.jwt.令牌登录
JWT全称 JSON Web Token (官网:https://jwt.io/)
JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)
- 第一部分:Header(头), 记录令牌类型、签名算法等。 例如:{"alg":"HS256","type":"JWT"}
- 第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等。 例如:{"id":"1","username":"Tom"}
- 第三部分:Signature(签名),防止Token被篡改、确保安全性。将header、payload,并加入指定秘钥,通过指定签名算法计算而来。
jwt就是把三个部分进行了base64编码,xxxxxxx.yyyyyyy.zzzzzz,x就是头部,y就是负载,z就是签名签名 = HA256( base64(header) + "." + base64(payload), 你的密钥 ) 然后将签名附在JWT的第三部分。这个签名是Header和Payload的“数字指纹”。
这个密钥是你自己所设置的,利用密钥才有可能解密第三部分,这样验证时只有一样的令牌才会通过,如果不一样就会拒绝(检验作用)
另外,在登陆时会用到两个技术(都可以用)对令牌进行验证
Filter过滤器
Interceptor拦截器
总结:
今天到此结束!!!!!!!!!!!!!!!!!!!!!!