#pragma once #include #include #include using namespace drogon; class ApiController : public HttpController { public: METHOD_LIST_BEGIN ADD_METHOD_TO(ApiController::getInfo, "/api/info", Get); ADD_METHOD_TO(ApiController::postData, "/api/data", Post); METHOD_LIST_END void getInfo(const HttpRequestPtr &req, std::function &&callback) { Json::Value ret; ret["status"] = "ok"; ret["version"] = "1.0.0"; ret["message"] = "Welcome to CppServerProject"; auto resp = HttpResponse::newHttpJsonResponse(ret); callback(resp); } void postData(const HttpRequestPtr &req, std::function &&callback) { auto json = req->getJsonObject(); if (!json) { auto resp = HttpResponse::newHttpResponse(); resp->setStatusCode(k400BadRequest); resp->setBody("Invalid JSON data"); callback(resp); return; } Json::Value ret; ret["status"] = "received"; ret["data"] = *json; auto resp = HttpResponse::newHttpJsonResponse(ret); callback(resp); } };