restbed
restbed copied to clipboard
The size of the body may cause problems
code block
void POST(const std::shared_ptr<restbed::Session> session)
{
const auto request = session->get_request();
long long int content_length = stoll(request->get_header("Content-Length", "0"));
std::pair<bool, std::string> res;
session->fetch(content_length, [](const std::shared_ptr<restbed::Session> session, const restbed::Bytes &body) -> void
{
if(body.size()>485918){//maxsize
return;
}
std::cout << body.size() << std::endl;
// string m_body(body.begin(), body.end());
// std::cout << m_body.size() << std::endl;
// colnago::dao::Post postObj;
// postObj.parse(string(body.begin(), body.end()));
// colnago::server::server.postDao->INSERT(postObj);
std::cout << "INSERT END" << std::endl; });
// BaseResponse<> response(res.first, res.second);
session->close(restbed::OK, "", {{"Content-Type", "application/json"}});
std::cout << "POST END" << std::endl;
}
When the size of the body is large, the lambda expression cannot be triggered, what are the possible reasons for this phenomenon?
POST END
779
INSERT END
POST END
947
INSERT END
POST END
1082
INSERT END
POST END
1220
INSERT END
POST END
1220
INSERT END
POST END
1334
INSERT END
POST END
1448
INSERT END
POST END
POST END
It's ok,now, I review HTTP_SERVICE sample.to call session->close in lambda.
void POST(const std::shared_ptr<restbed::Session> session)
{
const auto request = session->get_request();
long long int content_length = stoll(request->get_header("Content-Length", "0"));
auto handler = [](const std::shared_ptr<restbed::Session> session, const restbed::Bytes &body) -> void
{
string m_body(body.begin(), body.end());
colnago::dao::Post postObj;
postObj.parse(string(body.begin(), body.end()));
std::pair<bool, std::string> res = colnago::server::server.postDao->INSERT(postObj);
BaseResponse<> response(res.first, res.second);
session->close(restbed::OK, response.stringify(), {{"Content-Type", "application/json"}});
};
session->fetch(content_length, handler);
}