最近感觉人手不够,所以筹个代码(后端接口开发规范)

2020-05-05  本文已影响0人  CPFAN

简介

==============================================================================

这里主要是对开发接口及代码规范的书面说明,可以分别参考基础框架文件夹内的framework/api/idxwrd-framework-system及framework/api/idxwrd-framework-wechat项目内容来开发,开发过程中的详细规则如有不明确可以在开发组群内提问。
后台管理单表增删改查基础接口及其他相关内容全部代码可通过项目中配置的maven插件project-mybatis-template自动生成详情参见maven插件使用方法

目录简介

===============================================================================

后端开发目录 /cpfan_plant/api

api目录为maven根目录直接使用编辑器打开加载为maven项目即可,该顶层目录下包含两个web结构项目

cp-fan-console-api (后台管理接口)
cp-fan-wechat-api (微信小程序、公众号接口)

结构目录

接口开发均遵循mvc模块划分,以上目录结构,由上到下依次为:

  1. component 接口启动中运行的单独程序逻辑,如定时任务等
  2. config 接口服务配置,主要放置以@Configuration注解的配置类Bean
  3. controller 接口Mapping逻辑入口(详见下方接口Mapping开发要求)
  4. dao 接口数据层调用,遵循spring data相关开发规范进行开发(详见下方Dao层开发要求)
  5. entity 数据库表实体映射,可使用maven插件自动生成相关表结构实体,表结构实体主要用于数据存储(详见Dao层开发要求)
  6. model 接口数据模型定义,内公分三个文件夹,request,response,condition(详见接口Mapping开发要求)
  7. service 接口服务层,接口主要业务逻辑实现也就是以@Service注解标识的文件存放地址
  8. status 主要存放,类型状态等枚举类型(详见状态类型开发要求)

===============================================================================

细节开发要求

===============================================================================

接口 Mapping 开发要求

所有接口Mapping均保存在controller目录下,原则上,mapping类中,不允许存在业务逻辑,只允许存在路径重定向,转发,以及对应接口逻辑的service调用。

@PostMapping("demo/{demoPathVariable}")
public Response<DemoResponse> demo(
  @RequestParam("demoUrlParam") String demo,
  @PathVariable("demoPathVariable") String demoPathVariable,
  @RequestBody DemoRequest demoRequest
){
  
  return demoService.demo(demo, demoPathVariable, demoRequest);
}

以上代码段为普通数据接口,使用POST请求,接收3个参数,分别是参数demo,路径变量demoPathVariable,请求体 demoRequest。
数据参数处理及相关业务逻辑被封装在对应的service方法内。

注:
后台管理接口可以继承EntityController<T extends Id, R, C extends RequestCondition>抽象类
该抽象类提供后台管理基础增删改查方法,如特殊需要关闭某个基础接口,可在继承抽象类后,通过重写对应接口方法,抛出异常等操作,改变接口内容,基础接口可通过maven插件直接生成,生成内容包括controller到dao极其对应的mybatis的mapping.xml文件
EntityController中三个泛型分别表示Entity类,Response类,RequestCondition类详情参见下方对应说明

以上普通数据接口代码中包含2个概念类:

  1. Response
    DemoResponse为接口返回参数,该参数根据接口具体需求自行定义,并将定义类保存在model/response文件夹下
    命名规范:模块名业务分类名Response
  2. Request
    DemoRequest表示POST请求时,请求体的封装,多用于多参数表单提交,所有POST请求体在任务中没有明确标识的情况下,均以该方式来接受多参数的表单提交
    命名规范:模块名业务分类名Request

在后台管理接口中还可以见到3个常见概念类

  1. Entity
    后台管理接口公共抽象类EntityController<T extends Id, R, C extends RequestCondition>中可见,保存数据时为单表数据,则直接使用表映射类调用公共抽象类中save接口即可完成,特殊保存对象依然使用Request方式自行定义请求参数和保存规则。
    Entity类可以通过maven插件生成,其必须继承类org.idxwrd.framework.core.entity.Id

  2. PageListRequest<T extends RequestCondition>
    后台管理的列表分页请求封装,该类为框架对分页接口参数的封装,泛型类型必须继承分页参数条件查询类RequestCondition如果该接口不需要进行任何条件查询

  3. RequestCondition
    后台管理列表分页请求封装中列表条件查询参数封装,使用maven插件生成后台管理接口时会自动根据表名生成对应空对象存放在model/condition文件夹下,根据具体开发需求,修改列表条件参数即可,所有参数必须在继承方法toMap内存放到Map对象中。

===============================================================================

Dao层开发要求

===============================================================================

Dao层基础框架内使用mybatis作为mysql数据操作的底层框架,后台基础接口通过maven插件生成时,会自动继承EntityDao(其中包括了基础单表增删改查操作),同时也会生成对应的mybayis的mapping.xml文件,普通数据接口使用的Dao可以不做继承,自行定义使用sql

mybatis的mapping文件存放地址在对应项目resource文件加下mapper文件夹内,特殊情况下,为提高服务器性能,会将部分复杂查询逻辑直接通过sql进行查询,该sql将会通过任务形式单独布置,普通情况下,完成接口开发内容也包括相对简单,不含复杂逻辑及函数应用的单表或多表查询。

上一篇下一篇

猜你喜欢

热点阅读