Я новичок в 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;
}
Это действительно то, что вы хотите достичь?
Документ утверждает, что вы можете настроить, какие типы URI распознаются как вызов CGI с помощью параметров командной строки, таких как -cgi_pattern /cgi-bin/*.cgi
,
Тогда вам нужно только поставить исполняемый файл CGI с именем hello
какие выводы "hello world"
под ~/web_root
и скажите серверу Mongoose использовать его в качестве единственно возможного CGI: -cgi_pattern /hello$
(Я не проверял это сам, хотя)
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
,