# API(接口)框架开发手册
# 基本功能
TIP
- 接口权限、数量限制、接口日志查询、日志统计数据全部在caf-base中。
- 登陆验证。
- 接口路由。
- 接口版本。
- json报文与xml同时支持。
- 报文签名及验证。
- 字段合法性校验(开发中)
- 字段过滤(开发中)
- 接口超时设置
- 接口调用数量设置
- 接口权限认证(开发中)
- 接口数据用户级控制(开发中)
- 接口日志
- 接口调用信息
# 基础开发
# 快速开始
<dependency>
<groupId>com.cbit</groupId>
<artifactId>caf-api</artifactId>
<version>1.2.3</version>
</dependency>
1
2
3
4
5
2
3
4
5
说明
caf-base与caf-api不能同时引用,会造成不可预知的错误。
# 文件结构
- 啥也不说了,看示列吧。
@ApiService("version")
public class Version extends ApiServiceImpl {
@Autowired
private UserService userService;
@Autowired
private ObjectMapper xmlMapper;
@Api(value = "ver", flowRate = 1000)
public Map<String, Object> ver(Object data) {
xmlMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
Map<String, Object> map = new HashMap<>();
map.put("ver", Conf.getConf("application.version", "???"));
map.put("time", System.currentTimeMillis());
map.put("user", userService.logUser().getUsername());
return map;
}
@Api(value = "time", timeOut = 100)
public UserVO timeOut(Object data) {
ThreadUtil.sleep(1000);
return new UserVO();
}
@Api("error")
public JsonMap error(JsonMap data) {
throw new RRException("错误测试", 928);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# @ApiService
注解
- 用于定义一个APIService,这个命名为必填。
# @API
注解
/**
* 用于API方法上的注解。
* 使用请参考以下注解。
* <p>******使用本注解的入参只能是一个。
*
* @author yubo
* @date 2019/12/18 22:53
* @Version 1.0.0
* @MOdified By
*/
@Documented
@Retention(RUNTIME)
@Target(value = {ElementType.METHOD})
public @interface Api {
/**
* API名,建议命名规则: 业务.模块.名字.动词。
* 如:
* 支付业务订单状态修改:pay.order.status.update
*/
String value();
/**
* 接口版本。
*/
String version() default "";
/**
* 是否验证签名
*/
boolean isSign() default false;
/**
* 是否进行字段合法性校验。
*/
boolean isValidate() default false;
/**
* 是否进行登陆验证。
* 登陆验证方法(username password/token)
*/
boolean isLogin() default false;
/**
* 验证权限 ,默认不验证。
*/
String permission() default "";
/**
* 是否过滤数据。
*
* @return
*/
boolean filter() default false;
/**
* 每分钟内可调用的接口数据。
*/
int flowRate() default -1;
/**
* 接口超时。
*/
int timeOut() default -1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
- 使用方法请填写默认参数。
- 会与页面系统集成,在线配置以上参数。
# ApiSearchServiceImpl
类
说明
所有后台Service都应继承本类实现业务逻辑。
- 使用方法与SearchServiceImpl相同,请参看后端开发Service部分。
- 与之不同就是去除文件操作的相关注解。
# 自定义接收及返回
- 框架同时支持json和xml返回。返回实体类需要继承
com.cbit.server.common.utils.R
xml
返回需要配置对应注解,序列化与反序列化使用Jackson实现。可自行查看相关文档使用注解配置xml返回。- 框架默认返回只是一个示例,接口文档不需要参照本示列写。
- 如使用默认返回,覆盖
ApiConstant
类可命名返回字段名。
# 扩展开发
- 扩展开发需要实现
ApiBaseService
接口并继承ApiBaseServiceImpl
类。并在ApiConfig
配置实现Bean - 复写相关方法可实现扩展。这里就不再讲了。
# 接口统计
- 后台已写好。页面开发中。。。。