SpringBoot2.1 RESTful API项目脚手架(种子)项目

网友投稿 379 2023-01-17


SpringBoot2.1 RESTful API项目脚手架(种子)项目

最近在做一个大型的J2EE项目,后端语言选择了java,理所当http://然的选择了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.成功且不带数据的结果

// 不带数据的成功结果

return new Result().success();

返回结果示例:

{

"code": 200,

"message": "Success",

"data": null

}

2.成功且带返回数据的结果

return new Result().success("Hello,world");

// 当然你也可以返回对象或其他类型的数据

User user = new User();

return new Result().success(user);

返回结果示例:

{

"code": 200,

"message": "Success",

"data": "Hello,world"

}

或者是:

{

"code": 200,

"message": "Success",

"data": {

"name": "jack",

"age": 20

}

}

3.错误结果:

// fail方法的参数(错误代码,错误信息)

return new Result().fail(10400, "登陆失败,密码错误");

// 你还可以自定义错误结果的code

return new Result().fail(null, "未登录", 401);

返回结果示例:

{

"code": 400,

"message": "登陆失败,密码错误",

"data": 10400

}

或者:

{

"code": 401,

"message": "未登录",

"data": null

}

RESTful风格的异常接管

// 参数说明(错误信息, 错误Code)

throw new ServiceException("未登录", 401);

// 你也可以返回错误代码

throw new ServiceException(10404, "服务器维护中", 404);

返回结果示例:

{

"code": 401,

"message": "未登录",

"data": null

}

或者:

{

"code": 404,

"message": "服务器维护中",

"data": 10404

}

基于JWT的认证机制

@Autowired

private TokenService tokenService;

// 生成Payload

Map();

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判断权限

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:图文详解MyEclipse更换背景主题的方法
下一篇:实现接口需要抽象吗(接口中可以定义抽象方法吗)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~