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

 更新时间:2018年12月10日 14:28:20   作者:赤坂空太  
这篇文章主要介绍了SpringBoot2.1 RESTful API项目脚手架(种子)项目,用于搭建RESTful API工程的脚手架,只需三分钟你就可以开始编写业务代码,不再烦恼于构建项目与风格统一,感兴趣的小伙伴们可以参考一下

最近在做一个大型的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工程的脚手架,只需三分钟你就可以开始编写业务代码,不再烦恼于构建项目与风格统一。

快速开始

  1. 构建数据库
  2. 运行/src/test下的CodeGenerator.java进行代码生成
  3. 开始编写业务代码

内置功能与使用方法

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java8的EnumMap源码分析

    Java8的EnumMap源码分析

    这篇文章主要介绍了Java8的EnumMap源码分析,EnumMap 是一个用于存储 key 为枚举类型的 map,底层使用数组实现(K,V 双数组),与其他类型 map 不同的是 EnumMap 底层使用双数组来存储 key 与 value,key 数组会在构造函数中根据 keyType 进行初始化,需要的朋友可以参考下
    2023-11-11
  • java编程abstract类和方法详解

    java编程abstract类和方法详解

    这篇文章主要介绍了java编程abstract类和方法详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 使用Spring Boot的LoggersEndpoint管理日志级别

    使用Spring Boot的LoggersEndpoint管理日志级别

    这篇文章主要为大家介绍了使用Spring Boot的LoggersEndpoint管理日志级别,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • springboot 整合dubbo3开发rest应用的场景分析

    springboot 整合dubbo3开发rest应用的场景分析

    这篇文章主要介绍了springboot 整合dubbo3开发rest应用,本文通过实际的案例演示下基于 dubbo的2.7.X的版本,整合springboot完成一个rest应用开发和调用的案例,需要的朋友可以参考下
    2022-09-09
  • Java的函数方法详解(含汉诺塔问题)

    Java的函数方法详解(含汉诺塔问题)

    汉诺塔问题是一个经典的递归问题,下面这篇文章主要给大家介绍了关于Java函数方法(含汉诺塔问题)的相关资料,文中通过图文以及代码示例介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Spring实战之依赖关系注入之后的行为示例

    Spring实战之依赖关系注入之后的行为示例

    这篇文章主要介绍了Spring实战之依赖关系注入之后的行为,结合实例形式分析了Spring依赖关系注入之后的行为实现与使用相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • SpringCloud gateway跨域配置的操作

    SpringCloud gateway跨域配置的操作

    这篇文章主要介绍了SpringCloud gateway跨域配置的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • mybatisplus开启sql打印的三种方式汇总

    mybatisplus开启sql打印的三种方式汇总

    这篇文章主要介绍了mybatisplus开启sql打印的三种方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Java远程调用Shell脚本并获取输出信息【推荐】

    Java远程调用Shell脚本并获取输出信息【推荐】

    这篇文章主要介绍了Java远程调用Shell脚本并获取输出信息,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 史上最通俗理解的Java死锁代码演示

    史上最通俗理解的Java死锁代码演示

    这篇文章主要给大家介绍了关于Java死锁代码演示的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论