最近在做一个大型的j2ee项目,后端语言选择了java,理所当然的选择了spring,使用spring mvc来做restful风格的api开发很是方便,spring下面有很多子项目通过springboot集成也很舒服。程序员都知道沟通很重要,实际项目中,往往是各自为战,尽管使用的是相同的框架、工具,编写的代码却千差万别,为了统一基础代码风格,编写了这个项目种子。
除此之外,在开发一个web后端api项目时,通常都会经历搭建项目、选择依赖管理工具、引入基础包依赖、配置框架等,为了加快项目的开发进度(早点下班)还需要封装一些常用的类和工具,如标准的响应结构体封装、统一异常处理切面、接口签名认证、初始化运行方法、轮询方法、api版本控制封装、异步方法配置等。
每次开始一个类型的新项目,以上这些步骤又要重复一遍,虽然能够将老项目拿过来删删减减达到目的,但还是很费时费力,还容易出问题。所以,可以利用面向对象的思想,抽取这类web后端api项目的共同之处封装成一个项目种子。以后再开发类似的项目,就能直接在这个项目种子上迭代,减少重复劳动。
项目地址:https://github.com/ocubexo/springboot-restful-starter
简介
这是一个基于springboot 2.1.1 release,用于搭建restful api工程的脚手架,只需三分钟你就可以开始编写业务代码,不再烦恼于构建项目与风格统一。
快速开始
- 构建数据库
-
运行
/src/test
下的codegenerator.java
进行代码生成 - 开始编写业务代码
内置功能与使用方法
restful风格result生成器
1.成功且不带数据的结果
1
2
|
// 不带数据的成功结果 return new result().success(); |
返回结果示例:
1
2
3
4
5
|
{ "code" : 200 , "message" : "success" , "data" : null } |
2.成功且带返回数据的结果
1
2
3
4
5
|
return new result().success( "hello,world" ); // 当然你也可以返回对象或其他类型的数据 user user = new user(); return new result().success(user); |
返回结果示例:
1
2
3
4
5
|
{ "code" : 200 , "message" : "success" , "data" : "hello,world" } |
或者是:
1
2
3
4
5
6
7
8
|
{ "code" : 200 , "message" : "success" , "data" : { "name" : "jack" , "age" : 20 } } |
3.错误结果:
1
2
3
4
5
|
// fail方法的参数(错误代码,错误信息) return new result().fail( 10400 , "登陆失败,密码错误" ); // 你还可以自定义错误结果的code return new result().fail( null , "未登录" , 401 ); |
返回结果示例:
1
2
3
4
5
|
{ "code" : 400 , "message" : "登陆失败,密码错误" , "data" : 10400 } |
或者:
1
2
3
4
5
|
{ "code" : 401 , "message" : "未登录" , "data" : null } |
restful风格的异常接管
1
2
3
4
5
|
// 参数说明(错误信息, 错误code) throw new serviceexception( "未登录" , 401 ); // 你也可以返回错误代码 throw new serviceexception( 10404 , "服务器维护中" , 404 ); |
返回结果示例:
1
2
3
4
5
|
{ "code" : 401 , "message" : "未登录" , "data" : null } |
或者:
1
2
3
4
5
|
{ "code" : 404 , "message" : "服务器维护中" , "data" : 10404 } |
基于jwt的认证机制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@autowired private tokenservice tokenservice; // 生成payload map<string,object> payload = new hashmap<string,object>(); payload.put( "id" , 1 ); // 生成token tokenservice.generate(tokentype.access, payload, 1 ); // 格式化token string token = getyourtoken(); tokenservice.parse(token); // 返回的结果是一个jwt对象,详见jjwt文档 auth注解 auth注解用于获取当前用户的token中的userid,在获取的同时会自动校验用户token,若用户未登录则会抛出未登录的异常。 // 在controller中使用 @postmapping ( "/user/1/edit" ) public result edit( @auth int userid, @responsebody sthposted) { // 根据id判断权限 } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://juejin.im/post/5c0dd43b51882516dc61b73c