欢迎一起技术交流:开源项目地址:https://gitee.com/oufu/ofcms QQ 群: ①185948055
1、api网关主要工作: 统一解析参数 、检验数据、
2、通过继承AbstractsApi 自动实现拦截、进行解析,检验。
3、整个框架设计图
接口实例:
/**
* 内容接口
*
* @author OF
* @date 2017年12月14日
*/
@Action(path = "/content")
public class ContentApi extends ApiBase {
/**
* 获取内容信息
*/
@ApiMapping(method = RequestMethod.GET)
@ParamsCheck({@ParamsCheckType(name = "content_id",isNotNull = true,checkType = EmailCheck.class), @ParamsCheckType(name = "site_id")})
public void get() {
try {
Record record = Db.findFirst(Db.getSqlPara("cms.content.detail",getParamsMap()));
rendSuccessJson(record);
} catch (Exception e) {
e.printStackTrace();
rendFailedJson();
}
}
/**
* 获取内容列表
*/
@ApiMapping(method = RequestMethod.GET)
@ParamsCheck(@ParamsCheckType(name = "site_id"))
public void list() {
try {
rendSuccessJson( Db.find(Db.getSqlPara("cms.content.query",getParamsMap())));
} catch (Exception e) {
e.printStackTrace();
rendFailedJson();
}
}
/**
* 保存内容信息
*/
@ApiMapping(method = RequestMethod.POST)
public void save() {
try {
rendSuccessJson("测试");
} catch (Exception e) {
e.printStackTrace();
rendFailedJson();
}
}
}
ApiMapping api接口映射
public @interface ApiMapping {
//请求地址
String url() default "";
//是否需要验证权限 访问此接口是否有权限
boolean isAuth() default false;
//是否开启
boolean isOpen() default true;
//是否签名
boolean isSign() default false;
/**
* 请求方法
*/
RequestMethod method() default RequestMethod.ALL ;
//每分钟最大请求
int limit() default 100;
}
ParamsCheck 检验字段说明:
public @interface ParamsCheckType {
//名称
String name();
//最小长度
int maxLength() default 0;
//最大长度
int minLength() default 0;
//是否必填
boolean isRequire() default true;
//是否允许空值 true 可以为空,false 不为空
boolean isNotNull() default false;
//是否解密
boolean isDecrypt() default false;
//检验类型
Class checkType() default DefaultCheck.class;
//错误信息
String checkErrorMsg() default "";
String regexp() default "";
}
checkType 检验类型可定义:
/**
* 邮箱检验
* @author OF
* @version v1.0
* @className EmailCheck
* @date 2018/8/25
*/
public class EmailCheck extends AbstractCheck {
@Override
public boolean check(String email) {
return Pattern.matches("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", email);
}
}
开源项目地址:https://gitee.com/oufu/ofcms QQ 群: ①185948055
转载地址:https://blog.youkuaiyun.com/oufua/article/details/82453976