服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - SpringBoot2.1 RESTful API项目脚手架(种子)项目

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

2021-06-21 13:03赤坂空太 Java教程

这篇文章主要介绍了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.成功且不带数据的结果

?
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

延伸 · 阅读

精彩推荐
  • Java教程JAVA实现数字大写金额转换的方法

    JAVA实现数字大写金额转换的方法

    这篇文章主要介绍了JAVA实现数字大写金额转换的方法,涉及java针对字符串与数组的遍历与转换相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    鉴客2782019-12-26
  • Java教程详解Java中使用泛型实现快速排序算法的方法

    详解Java中使用泛型实现快速排序算法的方法

    这篇文章主要介绍了Java中使用泛型实现快速排序算法的方法,快速排序的平均时间复杂度为(n\log n),文中的方法立足于基础而并没有考虑优化处理,需要的朋友...

    飞翔的猫咪2422020-04-24
  • Java教程对handlerexecutionchain类的深入理解

    对handlerexecutionchain类的深入理解

    下面小编就为大家带来一篇对handlerexecutionchain类的深入理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Java教程网5742020-11-27
  • Java教程详解java实现遍历二叉树的三种情况

    详解java实现遍历二叉树的三种情况

    这篇文章主要介绍了java实现遍历二叉树的三种情况,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    linkinparkzlz3252020-09-20
  • Java教程spring boot集成rabbitmq的实例教程

    spring boot集成rabbitmq的实例教程

    这篇文章主要给大家介绍了关于spring boot集成rabbitmq的相关资料,springboot集成RabbitMQ非常简单,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借...

    陈凡了6662021-01-29
  • Java教程java发送短信的实现步骤

    java发送短信的实现步骤

    下面小编就为大家带来一篇java发送短信的实现步骤。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    lsyBlog6412021-01-10
  • Java教程简单谈谈java的异常处理(Try Catch Finally)

    简单谈谈java的异常处理(Try Catch Finally)

    在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。 ...

    hebedich1812020-04-13
  • Java教程基于ScheduledExecutorService的两种方法(详解)

    基于ScheduledExecutorService的两种方法(详解)

    下面小编就为大家带来一篇基于ScheduledExecutorService的两种方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看...

    面条啊Andrew5092021-01-23