# fast-sbapi
**Repository Path**: wirechen/fast-sbapi
## Basic Information
- **Project Name**: fast-sbapi
- **Description**: FastSbAPI主要是基于SpringBoot + SpringDataJPA打造的快速构建RestFul API的项目。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 131
- **Forks**: 56
- **Created**: 2018-03-21
- **Last Updated**: 2025-07-08
## Categories & Tags
**Categories**: spring-boot-ext
**Tags**: None
## README
## 简介
FastSbAPI主要是基于SpringBoot + SpringDataJPA打造的快速构建Restul API的项目,借鉴了另一个优秀的开源项目:[spring-boot-api-project-seed](https://github.com/lihengming/spring-boot-api-project-seed),增加了可视化脚手架,持久层用的SpringDataJPA,让用Java快速开发API不失为一个不错的选择,欢迎大家提出[issue](https://github.com/wirechen/fast-sbapi/issues)或提交[pr](https://github.com/wirechen/fast-sbapi/pulls)。请先花4分钟观看我用心录制的视频哦↓
## 使用教程[[完整版](http://v.youku.com/v_show/id_XMzQ3ODkxMTYwMA==.html?spm=a2h3j.8428770.3416059.1)]

## 功能
> 已实现
* ***通过可视化脚手架一键生成SQL脚本、dataobject、repository、service及controller***
* 最具Java风格的项目结构、配置文件、精简的POM
* 统一响应结果封装
* 统一异常处理
* 简单的普通用户登录注册
* 基于[JWT](https://www.jianshu.com/p/576dbf44b2ae)的接口权限认证
* 基于logback的生产环境日志按天滚动记录
* 常用基础方法抽象封装
> TODO
* 集成swagger,生成API的同时自动生成API文档
## 项目结构
- aspect: AOP切面类
- config: 项目配置
- controller: API路由控制层
- dataobject: javebean对象
* dto: data transfer object数据传输对象(在controller-service-repository三层之间传输)
* model: 数据持久模型(对应数据库字段)
* ro: request object数据请求对象(前端传过来的数据的封装)
* vo: view obejct视图对象(返回给前端数据的封装)
- enum: 枚举类
- exception: 自定义异常类
* handler: 异常处理类
- repository: 数据仓库(采用的SpringDataJPA作为的数据持久层)
- service: 业务接口
* impl: 业务实现
- utils: 项目工具集合
## 数据传输模型
这里主要对dataobject的各个object间的转换与传输做了一个模型。既然选择了用java开发API,那么我们必然是看中了java的严谨与高可维护性,java向来也不是快速开发的主导,项目中各种object的之间的相互转换看似繁琐复杂,但不可否认的是这样做为后期的维护与扩展打下了良好的基础。

客户端请求接口时传输RO(request object),返回结果时接受VO(view object),二者在HTTP传输过程中为json格式
* Controller层对RO进行转化(根据业务需求转为DTO或者直接转为Model)
* Service层将DTO转为Model并传输给Repository层
* Repository层作为数据的仓库必然只能与Model打交道。响应时Controller层应该对DTO或者Model做VO的转化,VO可以满足前端各种不同的格式的需求,Model层应该与数据库表严格一一对应
## 开发环境
* JDK 8
* Maven 3
* Mysql 5.7
## 快速开始
1. 本项目使用了[lombok](http://blog.csdn.net/v2sking/article/details/73431364),所以请确保自己编译器安装了该插件
2. 克隆项目
3. 执行初始化SQL脚本
```
create database fastsbapiDB;
use fastsbapiDB;
drop table if EXISTS user;
create table user (
id int not null auto_increment,
username varchar(100) not null comment '用户名',
password varchar(100) not null comment '登录密码',
email varchar(100) comment '联系邮箱',
phone varchar(20) comment '联系手机',
role tinyint(1) not null comment '用户角色, 0管理员/1普通用户',
create_time timestamp not null default current_timestamp comment '创建时间',
update_time timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
primary key (id)
) comment '用户表';
insert into user values(1,'管理员','123456','','13344445555',0,'2018-03-16 16:10:35','2018-03-16 16:10:39');
```
4. 启动项目,浏览器打开`http://localhost:8080/api/v1/code/index`根据提示生成代码,具体操作请看视频教程
## End
希望大家 [Star](https://github.com/wirechen/fast-sbapi/stargazers) & [Fork](https://github.com/wirechen/fast-sbapi/network) 给予支持。
---
============================更新============================
1. 我们公司的后台就是在该脚手架项目的基础上开发的,主要是给五个前端提供API服务(用户PC端、管理PC端、用户移动端、硬件设备端、小程序端),经过几个月的线上环境运行测试效果稳定。顺便展示一下我们公司后台的项目包结构和后台简易架构图吧。
2. 该项目可能我不会再更新了,因为它单纯作为一个自动生成API脚手架项目的话这里有一个更智能的替代品,那就是Spring推出的更好更快更“傻瓜”的API脚手架项目:Spring Data Rest。它可以让我们通过定义Model自动生成Restful风格的API,感兴趣的朋友可以去官方看一看,地址:https://projects.spring.io/spring-data-rest/
感谢大家的支持,我会继续坚持开源,坚持分享,猿类们我们一起共同进步吧!