【问题标题】:POST request to C++ Rest (casablanca) server对 C++ Rest (casablanca) 服务器的 POST 请求
【发布时间】:2017-09-07 17:05:24
【问题描述】:

我是全栈开发的新手,查询很少,我正在做一个项目(主要是为了自学),我想使用 node/express js 创建前端,后端想使用 mysql 数据库.我的网站和数据库之间的连接将通过休息服务器完成。这个 rest server 将在 Casablanca 中实现,并且还将有关于如何处理数据库的逻辑。

所以我主要关心的是如何在卡萨布兰卡休息服务器中处理发布请求?动机是在我使用 node/express js 创建的站点上提交表单。将通过表单接收到的值(即通过 node js rest 客户端)转发到 Casablanca Rest 服务器,这将进一步更新数据库。

如何在卡萨布兰卡处理此类(发布)请求并获取值?我已经尝试了一些方法来完成这项工作,下面提到了在某种程度上有效的最新方法:

为了支持 HTTP POST 请求,在代码中添加以下行或使用 POST 方法注册侦听器:

listener.support(methods::POST, handle_post);

在handle_post方法中我尝试通过http_request::extract_json方法提取json,如下:

void handle_post(http_request request)
{
    try
    {
            json::value v = request.extract_json().get();
            someFunction(v);                              //to iterate over JSON and update database
    }
    catch(http_exception const & e)
    {
            std::wcout << e.what() << std::endl;
    }

}

之后,当我发送 POST 请求(来自 Chrome 的 Postman 插件)时,我收到 500 个内部错误,甚至我的 someFunction 也没有被调用。有人可以提供我在这里到底做错了什么的线索吗?

我的整个实现方法可能是错误的,但如果有人可以为我提供一些正确方向的指示,那将非常有帮助。

提前致谢:)

【问题讨论】:

    标签: node.js rest casablanca


    【解决方案1】:

    您需要用状态码回复客户端

    request.reply(status_codes::OK, U("Hello World!"));
    

    只需将 hello world 换成您想从服务器返回的值。

    【讨论】: