Как использовать Mongoose (http-сервер) для обслуживания разных запросов?

Я новичок в http, и я использую встроенный http-сервер под названием mongoose.
Используя веб-корень в ~ / 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;
}

0

Решение

Это действительно то, что вы хотите достичь?

Документ утверждает, что вы можете настроить, какие типы URI распознаются как вызов CGI с помощью параметров командной строки, таких как -cgi_pattern /cgi-bin/*.cgi,

Тогда вам нужно только поставить исполняемый файл CGI с именем hello какие выводы "hello world" под ~/web_root и скажите серверу Mongoose использовать его в качестве единственно возможного CGI: -cgi_pattern /hello$ (Я не проверял это сам, хотя)

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,

0

По вопросам рекламы [email protected]