Code Monkey home page Code Monkey logo

framework's Introduction

Licence

简介

framework 是一个基于 Spring Boot 2.2.0.RELEASE 和 MyBatis 构建的快速开发的种子项目,适用广大的中小型公司构建API、Restful API的脚手架。该项目从众多实际项目中剥离出来,简单、易用、易拓展,加快我们开发的速度,减少我们苦逼的加班。

框架特性

  • 简单的项目结构、明确的业内技术规范
  • 集成常见RBAC权限控制模型,做到方法级别的细粒度权限控制
  • 统一的相应结果封装,便于前后端调试
  • 异常统一处理,开发模式下返回详细异常信息,生产环境屏蔽后台错误
  • 对多线程开发进行封装,简化企业级的线程开发的难度
  • 集成Druid连接池和监控技术
  • 使用Mybatis-Plus来简化Dao层开发,做到单表业务无SQL。屏蔽复杂的PageHelper分页插件,使用内置的IPage进行分页,简单便捷
  • 拦截常见CSRF攻击和SQL注入,保护Web安全
  • 使用JWT保护token安全,并使用拦截器弥补token的有效期的缺点
  • 特别适合前后端后分离的项目开发(无缝与Vue、Flutter、Android、IOS)衔接
  • 基于当前最新的Spring Boot 2.2.0.RELEASE稳定版,尝鲜最新特性

环境要求

  • JDK 8+
  • Maven 3.3+
  • Redis 3.0+
  • MySQL 5.5+

快速上手

  1. clone项目
  2. 在数据库初始化init.sql脚本,并修改相应的数据库连接信息
  3. 安装Redis(单机版Redis和Redis Cluster均支持),启动后在配置文件中修改相应的连接信息
  4. 项目启动成功
  5. 注册一个接口的调用端,获取accessKey。默认客户端为901935449cea420d910643b5582cb13d
  6. 默认的初始化用户名和密码是admin(123456)
  7. 使用Restful工具进行接口测试。注意所有非/interface开头的接口均需在头部或请求体中携带access-key, token, csrf这三个参数,用于用户身份校验及其他功能实现

开发建议

  • Java代码规范建议参考《阿里巴巴Java开发手册》(最新版下载)
  • 不建议使用@autowired进行注入,建议使用CHERRY.SPRING_CONTEXT.getBean(xxx.class)获取Spring容器中的bean
  • 建议系统接口以/api开头,给第三方暴露的接口,不需要认证的接口以/interface开头
  • 建议所有业务代码均按照JavaDoc的方式编写注释,尤其当你参与到一些比较大的项目时,你就知道我为啥把规范放到技术的前面
  • 数据库设计:表名命名规范 业务模块_tableName;列名命名规范 name login_name 多个单词使用下划线,切勿使用关键字
  • 工具类:建议先从apache-commons-*guava 里面找,避免重复造轮子
  • 接口文档:建议使用SwaggerUI、ShowDoc

调用示例

  1. 登录接口

保存csrftoken.用于后续的需要鉴权的接口使用。

  1. 注册接口

  1. 系统接口(拥有权限)

/api/example接口为例。通过rbac的关系我们可以看出admin用户拥有操作其接口的权限。

返回200,去数据库查看example发现多一条新纪录。而在传递头部参数的时候,如果csrftokenak有任意一个不传和传递错误的,后台都会报出相应的错误提示。

  1. 系统接口(没有权限)

/api/paths接口为例。通过rbac的关系我们可以看出admin用户不拥有操作其接口的权限。

返回403,提示权限不足。此时头部传递三个头部参数。

  1. 第三方接口

/interface/props接口为例。

通过结果发现调用成功。而此时头部并没有传递任何参数。

技术文档

License

Adam-Framework is under the Apache 2.0 license. See the LICENSE file for details

欢迎大家Star & Fork 的支持。

framework's People

Contributors

gyoomi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.