Poor Router Engine 一种用来帮助客户端实现更好的路由解决方案的rewrite引擎,可以用于客户端页面路由,模块解耦。
通过prengine
,你可以使用部分nginx
语法来描写配置文件,prengine
将会解析输入的URI,并根
据输入URI进行匹配,应用条件表达式,最后输出替换后的结果和规则。剩余的你可以使用Objective-C,Swift,
或是Java将prengine
在iOS或是Android平台上进行封装。
- 配置文件 - prengine所使用的配置文件格式
g++ ../package/prengine_val.cpp ../package/cond_ast.cpp ../package/prengine.cpp main.cpp
./a.out
拷贝package/目录下的prengine.h, prengine.cpp, prengine_val.h, prengine_val.cpp, cond_ast.h,
cond_ast.cpp到目标目录即可。
进入package/目录 运行make 在bin/目录下获取.a文件。
进入package/目录 运行make platform=ios 在bin/目录下获取.a文件。
1.include "prengine.h"
2.调用PRFILE* pr_creat(char *cnt, VAL_HANDlER valhandler)
来装载config文件
3.调用PRREWRITE* pr_rewrite_matched_creat(PRFILE *f,const char *uri)
传入PRFILE
句柄和需要转化的URI
,得到相应的PRREWRITE
对象。
4.通过const char *pr_getserver(PRREWRITE *)
,const char *pr_getscheme(PRREWRITE *)
,const char *pr_getoutval(PRREWRITE *)
,const char *pr_getrule(PRREWRITE *)
来获取PRREWRITE
对象的不同属性。
5.调用void pr_rewritefree(PRREWRITE *)
释放PRREWRITE
对象。
如何在config文件中使用自定义变量(eg. 在config中使用$test
)?
pr_id your_handler(const char *vname){
if(strcmp(vname, "test") == 0){
return pr_yes();
}
return pr_undefined();
}
pr_creat(f /*PRFILE句柄*/,your_handler);