James Iter's library by python
import jimit as ji
own_state_branch = {
'41250' : {
'code' : '41250' ,
'zh-cn' : '账密不匹配'
}
}
ji .index_state ['branch' ] = dict (ji .index_state ['branch' ], ** own_state_branch )
print json .dumps (ji .Commons .exchange_state (41250 ), ensure_ascii = False )
{
"code" : "412" ,
"zh-cn" : "先决条件失败" ,
"en-us" : "Precondition Failed" ,
"sub" : {
"zh-cn" : "账密不匹配" ,
"code" : "41250"
}
}
基于各主干的枝叶状态码从50开始,如412主干,则用户自定义枝叶状态码由41250起。
from jimit .router import Router , router_table
from jimit .ji_time import JITime
import unittest
reload (sys )
sys .setdefaultencoding ('utf8' )
'''
首先配置路由表
'''
router_table ['today' ] = JITime .today
'''
:param action: 目标路由地址
:param content: 传给目标的参数内容(content可以是一个字典,这样对于给目标传参更为灵活;示例: {'name': 'James', 'gender': 'M'})
'''
print Router .launcher (action = 'today' , content = '-' )
args_rules = [
(类型 [int | long | str | basestring | list | dict ...](必须 ), 变量名 (必须 ), 取值范围 (可选 ), 必须存在 (可选 ,默认为True ))
]
取值范围 : 列表为枚举 ['male' , 'female' , 'other' ], 元组为起止范围 (10 , 100 )
必须存在 : 布尔值 ,默认为True , 当该值为True时 ,则表示该变量必须存在 ; 否则 ,仅当该变量存在时 ,才匹配该条策略
args = {
'变量名' : 变量值
}
try :
ji .Check .previewing (args_rules , args )
except ji .PreviewingError , e :
ret = json .loads (e .message )
异常处理域
状态码200为正常 ,其它都为异常
详细描述在ret ['state' ]['sub' ]中
异常会于PreviewingError类型抛出 ,可通过json .loads (e .message )来结构化异常描述
更多异常用法请移步参考 :
https :// github .com / jamesiter / jimitlib - py / blob / master / tests / test_check .py
import jimit as ji
form_rules = [
(int , 'k' , (10 , 100 ))
]
form = {
'k' : 10
}
assert '200' == ji .Check .previewing (form_rules , form )['state' ]['code' ])
form_rules = [
(str , 'k' )
]
form = {
'k' : 123
}
try :
ji .Check .previewing (form_rules , form )
except ji .PreviewingError , e :
ret = json .loads (e .message )
assert '41202' == ret ['state' ]['sub' ]['code' ]