0

我是 http 的新手,我正在使用一个名为 mongoose 的嵌入式 http 服务器。
在 ~/web_root 中使用网络根,我想做:

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;
}
4

3 回答 3

1
  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.

于 2014-08-10T04:55:38.450 回答
0

这真的是您想要实现的目标吗?

该文档指出,您可以通过命令行选项(如-cgi_pattern /cgi-bin/*.cgi.

然后你只需要放置一个名为hellowhich output 的 CGI 可执行文件"hello world"~/web_root并告诉 Mongoose 服务器将其用作唯一可能的 CGI:(-cgi_pattern /hello$ 虽然我自己没有测试过)

于 2014-08-08T07:31:37.797 回答
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 根目录的方法。

从设计的角度来看,这种最近的方法更加灵活,允许基于不同的端点为不同的目录提供服务。

于 2021-05-10T15:37:00.917 回答