4——嵌入式WebServer的移植——appweb对http的简单实现——Action Handler

上一篇说了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配置非常丰富,其它的选项就不在这里写了,保证简洁,减小启动难度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值