定义文件语法
定义文件由几个部分组成,
定义头信息classmap,表示是一个定义文件开始,
代码辅助定义,定义生成代码相关一些路径,基类名称等
错误代码定义,定义接口请求中要返回的各种错误代码信息
服务相关参数定义,定义生成的C++服务程序的各种参数,比如开启端口,配置文件名等
类映射定义,定义对类中的一些设置,字段列表,说明等
类属性映射定义,定义生成的类代码属性和http请求字段,json字段,数据表字段之间的关系
接口方法定义,对接口做定义,描述接口的参数列表,参数值验证规则,处理逻辑的代码函数名等
一个简单的例子
classmap MyAccountItem MyAccount { [ target_path : ".\auto" ; logic_path : ".\logic" ; class_mgr : CSMyAccountMgr ; class_mgr_split : ""; class_http_mgr : CSMyAccountHttpMgr ; class_logic : CSMyAccountLogic ; class_validator: CSHttpFormValidator minLen,maxLen ; table_baseprefix : ""; //class_dac : CSMySQLDac; //class_dacmgr : CSMySQLDacMgr; //class_filter : CSFilter filterXXX; //class_fieldsfilter: CSFieldsFilter filterXXX; check_filter : 1 ; check_validator: 1 ; check_auth : 0 ; error_retmethod: withdata; error_noparam : 90002 ; error_db : 90001 ; error_invalidreq: 90019999; error_unknown : 99999; fun_jsonstr : strToJsonStr; use_jsoncpp : 0 ; parse_json : 0; to_json : 1 ; gen_preto : 0; parse_xml : 0; to_xml : 0; dispatch_method: uri ; dispatch_methodfield: method ; field_filter : 0; uri_filter : 0; data_crypt : 0; db_select : 0; db_tablefix : 0; mgr_getinaction : 0; mgr_logicneedhttp: 0; uri_head : "1.0"; field_fields : _fields ; field_orderby : _orderby ; field_page : _page ; field_pagesize : _pagesize ; status_deleted : -2 ; app_info : [ service_name : "MyAccount"; service_port : "12800"; service_platform: "linux"; net_framework : libevent; file_cfg : "/etc/myaccount.ini"; file_pid : "/var/run/myaccount.pid"; cron_enable : 0; cachelist_enable : 0; checktable_enable : 0; cmd_limitips : "127.0.0.1"; status_enable : 0; unload_enable : 1; wadl_enable : 1; http_disable : 0; db_disable : 0; log_enable : 1; log_file : "myaccount"; log_path : "/var/log/myserv"; run_user : root; run_group : root; max_threads: 10; max_conns : 1000; bits : 64; db_server : "127.0.0.1"; db_port : "3306"; db_username: "root"; db_userpwd : ""; db_name : "test"; db_poolcount: "10"; ]; sql_connection: "server=127.0.0.1,port=3306,username=root,password=,database=test" ; error_codes_ext: [ sql_conn : "server=192.168.1.235,username=svr_test01,password=svr_test01,database=svr_help"; // 数据库连接信息 sql_query : "select `name` as codename, `value` as code,`message` as codedesc, httpstatus from api_errorcodes"; // 查询的sql,要有codename,code,codedesc三个字段返回 file_name : ""; // 错误代码定义文件完整路径 file_type : csv;// csv,xls or mysql skip_line : 1; // ingore lines col_name : 3; col_code : 4; col_desc : 5; col_httpcode : 6; col_httpstatus: 7; code_heads: "100,900"; // 错误代码定义前缀,逗号分隔,可以过滤需要的地代码 ] error_codes : [ 'API_ERR_NAME_MINLEN' => array(10001, "帐号名长度小于最小值"), 'API_ERR_NAME_MAXLEN' => array(20002, "账号名长度大于最大值"), 'API_ERR_ID_EMPTY' => array(31001, "id字段为空"), 'API_ERR_NODATA' => array(21404, "没有数据"), 'API_DB_ERR' => array(90001, "数据库操作错误"), 'API_NOPARAM' => array(90002, "没有参数值"), 'API_UNKNOW' => array(99999, "未知错误"), ]; ] MyAccountItem : tb_myaccount { [ fields_checker : "name=minLen:4=10001|maxLen:16=20002" ; fields_list : "id,name,pass,status,createtime,lastoperate" ; fields_create: "name" ; fields_update: "name" ; field_id : "id=31001,21404" ; field_idauto : 1 ; // 标志id字段是否是自增字段,影响Insert插入数据语句 http_method : "myapp.account" C : "create" [ ("create") ] U : "update" [ ("update") ] R : "get" [ ("get") ] L : "list" [ ("list") ] U : "forbiden" [ ("forbiden") update_fields : "status=1" ] R : "getbyname" [ ("getbyname") fields_cond : "name" ] O : "login" [ ("login") logic : Login, fields_param : "name,pass" ] ; ] // 类属性名 [JSON字段名] (HTTP参数名) ,表字段名 :字段类型 (IDX类型) id [id] (id) ,id :int (id); ("帐号名") name [name] (name) ,name :string (key); ("帐号密码") pass [pass] (pass) ,pass :string ; ("帐号状态") status [status] (status) ,status :int ; createtime [createtime] (createtime) ,createtime :idate ; lastoperate [lastoperate] (lastoperate) ,lastoperate :idate ; }