m2core rest api web框架

m2core的Python项目详细描述


#M2core Web框架

状态
[![构建状态](https://travis-ci.org/mdutkin/m2core.svg?branch=master)(https://travis-ci.org/mdutkin/m2core.svg?branch=master)

我们混合使用tornado、sqlalchemy和redis。m2core有很多助手来完成普通任务,同时为rest api构建处理程序。当您使用postgresql制作rest服务时,您将获得真正的好处。redis用于缓存访问令牌、角色和角色权限,因此每次授权检查都不需要postgresql的参与。




r/>***一堆用于权限检查、try catch block等的修饰符**

**json中的每个处理程序的每个方法的自动json文档**

**db schema在json中带有自定义字段(我们在react form生成器中以某种方式使用它)**

**helper类用于rest api的单元测试**




ornado.define`设置配置。下面是具有默认值的设置列表:

**服务器选项**


-——————————————————————————————————————————————————————————————————————————————————————————————| str config.py
具有登录权限的ULT用户组str users
default permission default permission str authorized
xsrf cookie|启用或禁用xsrf cookie保护str或bool false
cookie secret tornado cookie secret str gfqeg4t023ty724ythweirhgiuwehrtp
服务器端口TORNADO TCP服务器绑定端口int 8888
语言环境日期、时间、货币等的服务器语言环境str ru_u ru.utf-8|
json缩进空格字符数,用于json响应中的新行int 2
线程池大小后台执行器池大小int 10|
gen_salt bcrypt模块中gen_salt函数的参数int 12



**db options**


——————————————————————————————————————————————————————————————————————————————————————| sqlalchemy调试模式bool false
pg主机数据库主机str 127.0.0.1
pg端口数据库端口int
pg端口数据库端口| int 5432
pg_db数据库名str m2core
pg_u用户数据库用户str postgres
pg_u密码数据库密码str密码
pg u pool_u size执行器的池大小int 40
pg_u pool u recycle池循环时间(秒),-1-禁用int-1


**redis选项**

-————————————————————您在根文件夹中的设置并将其命名为"config.py",或者将其放置在任何需要的位置,并通过
`--config-name=my/cool/path/to/config.py`参数将相对路径传递给此配置文件。您可以阅读更多关于tornado.options[此处](http://www.tornado web.org/en/stable/options.html)的信息。
顺便说一下,**m2core**还支持命令行解析。

这里是[示例rest api源](https://github.com/mdutkin/m2core/tree/master/example)。在这个例子中,我试图展示最重要的**m2core**功能。
所有模块都有文档记录,您可以在源代码中阅读每个功能的描述。

**m2core**中的权限管理非常简单。使用继承自"basehandler"的方法实现处理程序,然后执行如下操作:

``python
from handlers import adminusershandler


m2core=m2core()
human\route=r/users/:{id:int}
m2core.add\endpoint(human\route,adminusershandler)
/>m2core.add_endpoint_权限(human_route,{
'get':[选项.默认_权限,'get_user_info',
'post':无,
'put':[选项.默认_权限,'update_user_info',
'delete':[选项.默认_权限,'delete_user',
})
`````

每个路由的每个方法都有一堆权限。您可以再次使用同一个处理程序,使用其他权限的不同路由。
有关详细信息,请阅读"m2core.add_endpoint_permissions"的文档。

关于url mask,我应该说几句话。它支持自己的规则,然后生成龙卷风的url。URL掩码可以是:

-------------------------------------
/users/:{id}:id属性,任何类型
/users/:{id:int}:id int属性te,任意长度
/users/:{id:int(2)}:id int属性,长度为2个数字
/users/:{id:float}|:id float属性
/users/:{id:float(3)}:id float属性,长度为3个数字,包括`,`
/users/:{id:floAT(2,5)}:id float属性,长度介于2到5个数字之间,包括`,`
/users/:{id:string}:id string,任意长度,不带`/`symbol|
/users/:{id:string(2)}:id string,长度为2个符号,不带`/`symbol
/users/:{id:bool}:id bool标志,只接受"0"或"1"`|
/users/:{id:int(0,\[0-100\])}:id int,任意长度(0),但值必须介于"0"和"100"之间
介于"0"和"100"之间
|

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

推荐PyPI第三方库


热门话题
javapojo到org。布森。文件,反之亦然   java突然增加了G1老一代的承诺内存,减少了Eden的大小   java为什么对多个RXJava观察对象不执行并行执行?   java中的枚举是故障安全的吗?如果是,怎么做?   java是等待字符串变为相等的正确方法   java CodeAbbey挑战14个数据输入问题?   在java中的任意位置插入。util。列表   java替换html中的值   java需要帮助破译一个小堆栈跟踪:我使用的是哪种WS?   java Guice依赖项注入器空指针异常   java如何在3D引擎中实现视图剪裁平面?   JavaEclipseRCP:操作与命令需要更新   java如何使用XPAGES DesignerFacesServlet显示泰语字母(以及另一个亚洲/阿拉伯字母)   java装饰器模式问题   java我对空间复杂性的分析正确吗?   不显示java OpenGL ES 2纹理   使用java问题中的wc命令计算行数   java为什么空指针异常取决于条件的顺序?   Java日期在同一天或同一个月   java在使用lambda表达式时在变量中存储一些值