R3 是一个高性能的 URL 路由开发包,使用 C 语言开发。可将你的路由规则编译成前缀单词查找树。

Imgur

依赖的软件:

规则写法:

/blog/post/{id}      use [^/]+ regular Expression by default.
/blog/post/{id:\d+}  use `\d+` regular expression instead of default.

编程示例:

#include 

// create a router tree with 10 children capacIty (this capacity can grow dynamically)
n = r3_tree_create(10);

int route_Data = 3;

// insert the route path into the router tree
r3_tree_insert_pathl(n , "/zoo"       , strlen("/zoo")       , NULL, &route_data );
r3_tree_insert_pathl(n , "/foo/bar"   , strlen("/foo/bar")   , NULL, &route_data );
r3_tree_insert_pathl(n , "/bar"       , strlen("/bar")       , NULL, &route_data );
r3_tree_insert_pathl(n , "/post/{id}" , strlen("/post/{id}") , NULL, &route_data );
r3_tree_insert_pathl(n , "/user/{id:\\d+}" , strlen("/user/{id:\\d+}") , NULL, &route_data );

// let's comPILe the tree!
r3_tree_compile(n);


// dump the compiled tree
r3_tree_dump(n, 0);

// match a route
node *matched_node = r3_tree_match(n, "/foo/bar", strlen("/foo/bar"), NULL);
matched_node->endPOInt; // make sure there is a route end at here.
int ret = *( (*int) matched_node->route_ptr );

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务