# 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

说明

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

# @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
  • 使用方法请填写默认参数。
  • 会与页面系统集成,在线配置以上参数。

# ApiSearchServiceImpl

说明

所有后台Service都应继承本类实现业务逻辑。

  • 使用方法与SearchServiceImpl相同,请参看后端开发Service部分。
  • 与之不同就是去除文件操作的相关注解。

# 自定义接收及返回

  • 框架同时支持json和xml返回。返回实体类需要继承com.cbit.server.common.utils.R
  • xml返回需要配置对应注解,序列化与反序列化使用Jackson实现。可自行查看相关文档使用注解配置xml返回。
  • 框架默认返回只是一个示例,接口文档不需要参照本示列写。
  • 如使用默认返回,覆盖ApiConstant类可命名返回字段名。

# 扩展开发

  • 扩展开发需要实现ApiBaseService接口并继承ApiBaseServiceImpl类。并在ApiConfig配置实现Bean
  • 复写相关方法可实现扩展。这里就不再讲了。

# 接口统计

  • 后台已写好。页面开发中。。。。
更新时间: 5/18/2020, 11:43:13 PM