上一篇说了appweb使用的版本,可以查看。话不多说直接上干货。前端使用chrome浏览器,实现参数的设置。按java的方案是使用表单,也就是html里面的form。就是一种非常简单的格式:a=b&c=4...... appweb对http uri和form的解析都有它的成熟的方案,可以查看appweb的网页结构。我选择里面最简单的方式来实现Action Handler
Action Handler就是uri和接口一一对应,当请求到来的时候,appweb去给你做路由,不需要我们去做这部分逻辑。使用这个接口PUBLIC void httpDefineAction(cchar *name, HttpAction action),在httpLib.c中。name是uri,action是你的接口名字。而你的action接口的参数是一个包含http所有信息的结构体指针HttpConn *conn.
在你的程序中调用httpDefineAction去映射,然后修改appweb.conf,添加路由方法,例如下面这样。
<Route ^/type/>
SetHandler actionHandler
</Route>
如果这样添加路由的话,你的httpDefineAction调用可以是这样。这种映射你可以定义很多很多,按官网说法,速度非常快!!!form表单在appweb解析http字符串的时候已将拆分保存,直接调用
PUBLIC cchar *httpGetParam(HttpConn *conn, cchar *var, cchar *defaultValue)接口自动取到value字符串的值,其中var就是表单元素中的key。
httpDefineAction("/type/id", http_process_type_id);
void http_process_type_id(HttpConn *conn){
/* your application codes */
char* id = httpGetParam(conn, "id", 0);
if(!id) printf("%s %d id=%s\n", __FUNCTION__, __LINE__, id);
return;
}
把你的程序运行起来,奇迹就出现啦!
appweb还提供了更好的解决方案,Action Handler并不是最优方案,里面的esp应该会更好。如果我用了,并且发现很好,再有时间,会写一下使用方法。appweb.conf配置非常丰富,其它的选项就不在这里写了,保证简洁,减小启动难度。