rest,restful验证器计时tp

aiovalidator的Python项目详细描述


https://travis-ci.org/vir-mir/aiovalidator.svg?branch=masterhttps://codecov.io/gh/vir-mir/aiovalidator/branch/master/graph/badge.svg

包装aiophtt,用于验证和快速构建微服务。 赞成的意见: -易于集成,不影响整个项目的运行 -输入参数的声明性描述 -异步验证的能力 -http方法的可用性

示例

importasynciofromaiohttpimportwebfromaiovalidatorimport(validator_factory,middleware_exception,IntegerField)asyncdeffoo_validator(value):awaitasyncio.sleep(1)returnvaluedeffoo_default(value):asyncdefdefault():returnvaluereturndefaultclassHello(web.View):classField:field1=IntegerField()field2=IntegerField(required=False,methods={'GET'},verbose_name='Field method get')field3=IntegerField(validator=foo_validator,)field4=IntegerField(default=foo_default)@asyncio.coroutinedefget(self):fields=self.request['fields']print(fields)returnweb.json_response()app=web.Application(middlewares=[validator_factory(),middleware_exception])app.router.add_get('/{user_id}/',Hello)web.run_app(app,port=8000)

我的字段示例

importphonenumbersfromaiovalidatorimportStrField,abortclassPhoneField(StrField):defget_value(self,value):value=super().get_value(value)try:value=phonenumbers.parse(value,'RU')region=phonenumbers.region_code_for_number(value)regions=phonenumbers.COUNTRY_CODE_TO_REGION_CODE[7]ifnotphonenumbers.is_valid_number(value):raiseabort(status=400,text='Field {} not format phone'.format(self.name))ifregionnotinregions:raiseabort(status=400,text='Field {} not format phone'.format(self.name))value=phonenumbers.format_number(value,phonenumbers.PhoneNumberFormat.E164)[1:]returnvalueexceptphonenumbers.NumberParseException:raiseabort(status=400,text='Field {} not valid'.format(self.name))

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?