![如何设计一个幂等接口-LMLPHP 如何设计一个幂等接口-LMLPHP](https://c1.lmlphp.com/user/master/2020/09/03/son_1/68bdb5b9395d0f154d71ececc9e01d21.png)
![如何设计一个幂等接口-LMLPHP 如何设计一个幂等接口-LMLPHP](https://c1.lmlphp.com/user/master/2020/09/03/son_1/68bdb5b9395d0f154d71ececc9e01d21.png)
![如何设计一个幂等接口-LMLPHP 如何设计一个幂等接口-LMLPHP](https://c1.lmlphp.com/user/master/2020/09/03/son_1/68bdb5b9395d0f154d71ececc9e01d21.png)
2、application.yml:主要是配置redis
3、业务代码:
•新建一个枚举,列出常用返回信息,如下:
•新建一个JsonUtil,当请求异常时往页面中输出json:
•新建一个RedisUtil,用来操作redis: •新建一个TokenUtil,用来生成和校验token:生成token没什么好说的,这里为了简单直接用uuid生成,然后放入redis中。校验token,如果用户没有携带token,直接返回false;如果携带了token,但是redis中没有这个token,说明已经被删除了,即已经访问了,返回false;如果redis中有,但是redis中的token和用户携带的token不一致,也返回false;有且一致,说明是第一次访问,就将redis中的token删除,然后返回true。 新建一个注解,用来标注需要进行幂等的接口: 接着要新建一个拦截器,对有@NeedIdempotent注解的方法进行拦截,进行自动幂等。 然后将这个拦截器配置到spring中去:•最后新建一个controller,就可以愉快地进行测试了:
访问/token
,不需要什么校验,访问/hello
,就会自动幂等,每一次访问都要先获取token,一个token不能用两次。
本文分享自微信公众号 - java开发那些事(javawebkf)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。