我是http的新手,我正在使用名为mongoose的嵌入式http服务器 在〜/ web_root中使用web根目录,我想这样做:
if uri == "/hello"
show "hello world"
else
show the file in web_root like index.html
我试着像这样使用猫鼬
struct mg_server *server;
server = mg_create_server(p, HttpEventHandler);
mg_set_option(server, "document_root", "~/web_root");
mg_set_option(server, "listening_port", "8080");
for(;;)
mg_poll_server(server, 1000);
这是HttpEvenHandler
int HttpEventHandler(struct mg_connection *conn, mg_event ev) {
if(ev == MG_AUTH)
return MG_TRUE;
else if(ev == MG_REQUEST) {
if(strcmp("/hello", conn->uri) == 0) {
mg_printf_data(conn, "%s\n", "hello world");
}
return MG_TRUE;
}
// I don't know what to write here
return MG_FALSE;
}
答案 0 :(得分:0)
这真的是你想要达到的目标吗?
The document表示您可以通过-cgi_pattern /cgi-bin/*.cgi
等命令行选项配置哪些URI被识别为CGI调用。
然后你只需要放一个名为hello
的CGI可执行文件,在"hello world"
下输出~/web_root
并告诉Mongoose服务器将其用作唯一可能的CGI:-cgi_pattern /hello$
(虽然我没有亲自测试过)
答案 1 :(得分:0)
else if(ev == MG_REQUEST) {
if(strcmp("/hello", conn->uri) == 0) {
mg_printf_data(conn, "%s\n", "hello world");
return MG_TRUE;
}
return MG_FALSE; // Let Mongoose serve the request
}
另外,我认为这不会起作用:
mg_set_option(server, "document_root", "~/web_root");
指定完整路径,例如/home/joe/web_root
。
答案 2 :(得分:0)
嗯,似乎 mg_set_option()
无处可寻(7.3 版)。
用于设置 Web 根目录的正确 API 调用是:mg_http_serve_dir( connection, http_event_object, options);
最后一个参数 "options"
有一个成员 mg_http_serve_opts::root_dir
。这将是指定用于服务的 Web 根目录的方法。
从设计的角度来看,这种最近的方法更加灵活,允许基于不同的端点提供不同的目录。