术语
-
Controller:控制器,统称接口,包括http接口和rpc接口。
-
Service:参考分层架构中的服务层
-
DTO:DTO(Data Transfer Object)数据传输对象;本规范中分为两种,一种是serviceDTO,即service层使用的请求参数和返回值对象;一种是ControllerDTO,即接口层使用的请求参数和返回值对象,根据实践来看,一般ControllerDTO会在普通的serviceDTO之外包一层
1、serviceDTO规范约定
-
DTO首先是一个普通的JavaBean,原则上,JavaBean所有规范都都适用于DTO规范
-
DTO必须是一个公共类,使用public修饰,如: public class Book{ …}
-
DTO必须有一个不带参数公共构造函数:例如:public Book() {…}
-
DTO所有类成员变量都为private ,如: private Integer id;
-
DTO所有类成员变量都不能是基础类型, 必须使用包装数据类型
-
DTO类成员变量 使用的包装数据类型只限于Integer、Long、Double和Boolean四种,Byte、Character、Short和Float弃用
-
DTO类成员变量类型只能是包装数据类型、其他DTO数据类型和java.util.List;且List中的类型只能是包装数据类型、其他DTO数据类型
-
DTO所有类成员变量都必须提供getter/setter方法的成员变量,且getter/setter方法不能含有任何业务逻辑
-
DTO所有类成员变量命名规范建议
-
一般以连续的两个小写字母开头
-
如果类成员名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如类成员名为uName,方法是getuName/setuName
-
如果前两个字母是大写(一般的专有名词和缩略词都会大写),也是类成员名直接用作 getter/setter 方法中 get/set 的后部分。例如类成员名为URL,方法是getURL/setURL
-
如果类成员属性是Boolean,那么类成员名不可以用is、IS、iS和Is开头
-
-
满足以上定义的DTO均可以在快嘉接口定义文件中被使用,无论已有还是新建
-
对于未在规范中显性支持的字段类型和自定义类型,暂不支持mock和接口测试
2、Service规范约定
-
Service是一个普通的Interface
-
Service由若干方法组成
-
Service中每个方法的请求参数只能是0到多个包装类型和至多一个DTO类,且DTO类只能是请求参数中的最后一个
-
Service中每个方法的返回值只能是VOID、包装数据类型、DTO数据类型和java.util.List;且List中的类型只能是包装数据类型、其他DTO数据类型
-
Service中每个方法均有version字段,在实际的Service定义中,该version字段会和方法的name字段一起影响生成的Interface
-
Service中每个方法均有version、path、resType、reqType和method字段,这些字段将会在http接口中发挥作用,rpc接口中暂不涉及
-
Service中每个方法的headVariables域由0到多个包装类型组成,这些字段将会作为参数作用在http接口中的请求Header
-
Service中每个方法的cookieVariables域由0到多个包装类型组成,这些字段将会作为参数作用在http接口中的请求Cookie
-
Service中每个方法的pathVariables域由0到多个包装类型组成,这些字段将会作为参数作用在http接口中的请求路径
-
Service中每个方法的parameters域由0到多个包装类型组成,这些字段将会作为参数作用在http接口中的QueryString 部分或者Form表单
-
Service中每个方法的request或者为空,或者是一个DTO,这个字段对应的对象实例将会反序列化成一个字符串作为参数作用在http接口中的reqeustBody
-
Service中每个方法的response或者为空,或者是一个包装数据类型、一个DTO数据类型和一个java.util.List;且List中的类型只能是包装数据类型和DTO数据类型
3、ControllerDTO规范约定
-
serviceDTO可以直接作为ControllerDTO使用
-
无论更改接口的请求ControllerDTO和响应ControllerDTO,都会同时影响到到服务端和请求端的具体实现,且只会影响到到服务端和请求端的具体实现,且只会影响到到服务端和请求端对serviceDTO中系统参数的解析和处理部分
4、Controller规范约定
-
每一套Controller都会关联一套对应的请求ControllerDTO和响应ControllerDTO
-
目前支持的请求ControllerDTO和响应ControllerDTO如下:接口名称请求ControllerDTO响应ControllerDTO接口类型
Api com.fastjrun.dto.ApiRequest
com.fastjrun.dto.DefaultResponse(DefaultListResponse)
http App com.fastjrun.dto.AppRequest
com.fastjrun.dto.DefaultResponse(DefaultListResponse)
http Generic 无封装
com.fastjrun.dto.DefaultResponse(DefaultListResponse)
http Dubbo 无封装
com.fastjrun.dto.DefaultResponse(DefaultListResponse)
rpc-dubbo 备注:目前代码生成插件只支持表中列出的请求ControllerDTO和响应ControllerDTO对应关系
其他:
-
serviceDTO中支持的数据类型除包装类型和serviceDTO,可支持的其他类型如下
-
java.util.Date
-
参考:
-
javabean根据属性名称获取对应的的getter/setter方法名: https://blog.csdn.net/xiaozaq/article/details/54691413
-
阿里巴巴Java开发手册