```
config.database['host']=['127.0.0.1'] #服务器地址
config.database['port']=[3306] #端口
config.database['break']=1 #断线重连次数
```
动态配置不建议在web应用中使用,因为他是全局的,通常情况下,如果您的web应用需要部分接口需要修改配置信息应该使用方法配置,cli脚本可以使用动态配置
```
print(config.app) #获取app配置信息
print(config.database['host']) #获取数据库配置信息
print(config.other['aliyun']) #获取aliyun配置信息
...
```
## 运行文件
app.py是web应用的运行文件,你您只需要用python执行app.py即可运行web应用,app.py文件是您创建应用时生成的
app.py内容如下:
```
# #gunicorn -b 0.0.0.0:39010 app:app
from kcweb import web
import app as application
app=web(__name__,application)
if __name__ == "__main__":
#app 是当前文件名 host监听ip port端口
app.run("app",host="0.0.0.0",port="39001")
```
您可以根据上面的备注修改相关的信息
## URL设计
kcweb在没有定义路由的情况下典型的URL访问规则是:
```
http://serverName/模块/版本/控制器/函数/[参数名/参数值...]
```
kcweb在创建应用时默认配置了基本路由
```
route['default']=True #是否开启默认路由 默认路由开启后面不影响以下配置的路由,模块名/版本名/控制器文件名/方法名 作为路由地址 如:http://www.kcw.com/api/v1/index/index/
route['modular']=[{"www":"api"},{"127":"api"},{"192":"api"}] #配置域名模块 配置后地址为:http://www.kcw.com/v1/index/index/ 注意:如果使用的是代理服务器需要把代理名称设置为当前配置的域名,否则不生效
route['edition']='v1' #默认路由版本,配置后地址为 http://www.kcw.com/index/index/
route['files']='index' #默认路由文件
route['funct']='index' #默认路由函数
route['methods']=['POST','GET'] #默认请求方式
```
所以您的URL访问规则是:
```
http://serverName/控制器/函数/[参数名/参数值...]
```
## 方法
公共方法:
如果您定义的方法需要被当前应用的所有模块模块使用,那么你应该把您的的方法定义在公共方法文件中,所有方法名应该以下划线方式命名,并且不能出现框架提供的方法名,下面定义的方法可以在其他模块下使用
```
├─./
├─app 应用目录
│ ├─common 公共方法目录
│ │ ├─__init__.py 公共方法文件
from kcweb.common import *
from app import config
def returnjson(data=[],code=0,msg="成功",status='200 ok'):
"""在浏览器输出包装过的json
参数 data 结果 默认[]
参数 code body状态码 默认0
参数 msg body状态描述 默认 成功
参数 status http状态码 默认 200
返回 json字符串结果集
"""
res={
"code":code,
"msg":msg,
"time":times(),
"data":data
}
return json_encode(res),status,{"Content-Type":"application/json; charset=utf-8"}
```
模块方法:
如果您定义的方法只是为某个模块使用,那么你应该把您的的方法定义在模块方法文件中,所有方法名应该以下划线方式命名,并且不能出现框架提供的方法名和公共方法里定义的方法名,下面定义的方法可以在当前模块下使用
```
├─./
├─app 应用目录
│ ├─api 模块目录(简称模块)
│ │ ├─common 当前模块方法目录
│ │ │ ├─__init__.py 当前模块方法文件
from app1.common import *
#下面的方法在当前模块中有效
G=globals.G
#下面的方法在当前模块中有效
def before_request():
G.userinfo=get_session("userinfo")
print('api模块在请求前执行,我是要在配置文件配置后才能生效哦!',G.userinfo)
def after_request():
print('api模块在请求后执行,我是要在配置文件配置后才能生效哦!')
def set_session(name,value,expire=None):
"设置session"
return session.set("app1api"+str(name),value,expire)
def get_session(name):
"获取session"
return session.get("app1api"+str(name))
def del_session(name):
"删除session"
return session.rm("app1api"+str(name))
def tpl(path,**context):
return Template("/api/tpl"+str(path),**context)
```
## 控制器定义
控制器文件通常放在[应用]/[模块]/controller/[版本]目录下面,文件名统一保持小写。一个视图文件格式应该是如下:returnjson方法的作用是在浏览器输出包装过的json,当然你也可以修改该方法的值
```index.py
from [应用].[模块].common import *
def index1():
return returnjson("index")
def index2():
return returnjson("index")
...
```
访问的url是(在没有定义路由的情况下)
http://server/[模块]/[版本]index/index1
http://server/[模块]/[版本]index/index2
##视图初始文件
______init__.py
```index.py
from . import index
# def error(err,data):
# "该函数在当前目录下无法匹配时被调用"
# return data,"200",{"Content-Type":"text/json; charset=utf-8"}
```
创建控制器文件后,您需要在当前版本目录下的______init__.py文件中导入控制器文件,______init__.py文件也可以定义函数,但他不能调用common下的方法
更多文档参考 :http://212.129.149.238:9501/index/index/doc/docde/1