java api 验证框架设计 基于jfinal 设计api网关

欢迎一起技术交流:开源项目地址: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.csdn.net/oufua/article/details/82453976

猜你喜欢

转载自blog.csdn.net/oufua/article/details/82453976