@zongwu
2017-08-17T07:45:41.000000Z
字数 1903
阅读 324
未分类
<dependency>
<groupId>com.ipudong</groupId>
<artifactId>api-client</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.11</version>
<type>jar</type>
</dependency>
@ApiCenterOperation(
name = "ac.user.fetch",
version = "1.0",
author = "陈俊棋",
description = "通过手机号码查询用户的信息",
dependLogin = false
)
Result<UserDO> getByMobile(@ApiCenterParam("mobile") String mobile);
@ApiCenterOperation(
name = "ac.user.fetch.list",
version = "1.0",
author = "陈俊棋",
description = "通过手机号码查询用户的信息",
dependLogin = false
)
Result<List<UserInfoPOJO>> fetchUserInfoList(@ApiCenterParam("userQuery") UserQuery userQuery);
public class ApiGenerator {
// 配置dubbo服务接口所在的包名
private static final String packageName = "com.ipudong.pdserver.client.service";
// 作用域 - 用于划分来源
private static final String scope = "pdserver";
public static void main(String[] args) {
System.out.println(">>>> api generator begin <<<<");
new ApiCenterGenerator(packageName, scope).generate();
System.out.println(">>>> api generator end <<<<");
}
}
1、@ApiCenterParam
的value必须与参数名保持一致,举例:@ApiCenterParam("mobile") String mobile
中的两个mobile。
2、参见注解使用用例(二),若是传入参数是POJO则要求POJO的field都需是java.lang
类型。否则可能会导致apicenter部分无法正确解析(即不支持POJO内嵌套POJO)。
3、需要明确标记@ApiCenterOperation
与@ApiCenterParam
的接口才会导出注解。
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiCenterOperation {
String name();//接口名称
String version();//接口版本
String author() default "";//作者
String description() default "";//接口描述
boolean dependLogin() default true;//依赖登录
boolean export() default true;//是否导出到配置文件
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface ApiCenterParam {
String value();//字段名称
boolean canEmpty() default false;//是否选填
String def() default "";//默认值
String desc() default "";//字段说明
boolean pojo() default false;//是否pojo
}