为什么带有 URL 映射的 Hello World 不起作用

why is hello world with url mapping not working?

本文关键字:Hello World 不起作用 映射 URL 为什么      更新时间:2023-10-16

我在使用 cppcms hello world 示例与 url 映射时遇到问题。

我在理解这部分时遇到困难:

int main(int argc,char ** argv)
{  
    try {
        cppcms::service srv(argc,argv);

        srv.applications_pool().mount(
                cppcms::applications_factory<hello>() //i do not understand this part
        );
        srv.run();
    }
    catch(std::exception const &e) {
        std::cerr << e.what() << std::endl;
    }
}

在教程中说/hello - 欢迎函数将被调用,但这不是正在发生的事情。改为调用此方法:

void hello::main(std::string /*url*/)
{
    response().out() <<
        "<html>n"
        "<body>n"
        "  <h1>Hello World</h1>n"
        "</body>n"
        "</html>n";
}

欢迎方法如下所示,它是在 hello 类的作用域中定义的:

void welcome()
{
    response().out() <<
        "<h1> Welcome To Page with links </h1>n"
        "<a href='" << url("/number",1)  << "'>1</a><br>n"
        "<a href='" << url("/number",15) << "'>15</a><br>n"
        "<a href='" << url("/smile") << "' >:-)</a><br>n";
}

如果你能帮助我,我需要一些答案。我只是想理解,所以如果你能指出我正确的方向,那就太好了。

您需要在 hello 构造函数中设置映射,如 hello world 示例和您在答案中发布的链接所示。

特别是这部分:

dispatcher().assign("",&hello::welcome,this);  
mapper().assign("");  
mapper().root("/hello");  

这会将 hello 应用程序的默认路由映射到"welcome"方法。如果不设置映射,它将默认为 main。

我个人对这个库了解不多,但它看起来像一行:

cppcms::applications_factory<hello>()

你用服务器来断言,并即时启动某种hello类。然而我