前面我们已经熟悉了goahead-test程序的基本使用方法,今天测试一下action。

在test.c中,actionTest相关的代码如下(这里只分析其中一个,源码定义了三个):

//定义action,将函数actionTest绑定到/action/test这个url
websDefineAction("test", actionTest);

/*
    Implement /action/actionTest. Parse the form variables: name, address and echo back.
 */
static void actionTest(Webs *wp)
{
    cchar   *name, *address;

    /*获取变量"name"和"address"的值*/
    name = websGetVar(wp, "name", NULL);
    address = websGetVar(wp, "address", NULL);
    websSetStatus(wp, 200);
    websWriteHeaders(wp, -1, 0);
    websWriteEndHeaders(wp);
    //回显到页面上
    websWrite(wp, "<html><body><h2>name: %s, address: %s</h2></body></html>\n", name, address);
    websFlush(wp, 0);
    websDone(wp);
}

可以看到其功能是通过web页面获取变量”name”和”address”的值,然后回显到页面上,由于例程中没有提供对应的web页面,所以需要自己编写,我们做一个简单的输入界面,代码如下:

<!DOCTYPE html>
<html>
<meta charset="utf-8"/>
<body>

<!-- 注意action后面的名字(test)要与程序中的对应 -->
<form method="POST" action="/action/test">
    actionTest:
    </br>
    <!-- name后面的是变量名"name"要与程序中的对应 -->
    <input type="text" name="name" value="name" />
    </br>
    <!-- name后面的是变量名"address"要与程序中的对应 -->
    <input type="text" name="address" value="address" />
    </br>
    <input type="submit" value="ok" />
</form>

</body>
</html>

将其保存为test_action.html,并且存放到web目录下(注意这里不能将action写在前面,我也不知道为什么,测试的时候发现只要将action写在前面,运行的的时候就会提示action未定义),这里完成后,我们就可以运行goahead-test程序访问这个页面了。

输入如下命令运行goahead服务器:

./goahead-test -v --home ../../../test/

在浏览器访问127.0.0.1:18080/test_action.html就可以看到对应的页面了(如图1),在输入框中分别输入变量”name”和”address”的内容,点击提交,服务器就会将我们输入的内容回显到页面上(如图2)。

图片

图1

图片

图2

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐