栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

如何使用oatpp将c++代码封装成api

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用oatpp将c++代码封装成api

注:本文的c++代码是基于ortools开发的

一、运行ortools代码  1. 下载ortools

自己的代码是在下载后的文件or-tools_MacOsX-12.0.1_v9.2.9972/examples/cpp/min_inter.cpp里编写的 

2. 终端运行 
cd or-tools_MacOsX-12.0.1_v9.2.9972 
make run SOURCE=examples/cpp/min_inter.cpp
二、下载配置oatpp环境 1. 获取源码
git clone https://github.com/oatpp/oatpp.git
2. 编译
cd oatpp/
mkdir build && cd build
cmake ..
make
3. 配置

将编译好的文件夹oatpp/src下的oatpp、oatpp-test拷贝到/usr/local/include/oatpp-1.3.0/oatpp下

将编译好的文件oatpp/build/src/liboatpp.a、liboatpp-test.a拷贝到/usr/local/lib/oatpp-1.3.0下

三、编写接口 
// 引入oatpp包
#include 
#include 
#include 
#include 
#include 

using namespace std;

#include OATPP_CODEGEN_BEGIN(DTO)

// 定义返回对象
class MessageDto : public oatpp::data::mapping::type::Object
{
  DTO_INIT(MessageDto, Object);
  DTO_FIELD(Int32, statusCode);
};

class Handler : public oatpp::web::server::HttpRequestHandler{
private:
  std::shared_ptr m_objectMapper;

public:
  Handler(const std::shared_ptr &objectMapper) : m_objectMapper(objectMapper){};
  std::shared_ptr handle(const std::shared_ptr &request) override
  {
    // 获取参数
    auto source = request->getPathVariable("param");
    
    // 运行ortools文件
    system("cd or-tools_MacOsX-12.0.1_v9.2.9972 && make run SOURCE=examples/cpp/min_inter.cpp");

    // 赋值接口返回结果
    auto message = MessageDto::createShared();
    message->statusCode = 200;
    return ResponseFactory::createResponse(Status::CODE_200, message, m_objectMapper.get()); 
  }
};

void run()
{
  auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared();
  auto router = oatpp::web::server::HttpRouter::createShared();
  // 定义访问路径、请求方式、
  router->route("GET", "/hello/{param}", std::make_shared(objectMapper));
  auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
  // 绑定端口号
  auto connectionProvider = oatpp::network::server::SimpleTCPConnectionProvider::createShared(10000);
  oatpp::network::server::Server server(connectionProvider, connectionHandler);
  OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
  server.run();
}

int main()
{	
  oatpp::base::Environment::init();
  run();
  oatpp::base::Environment::destroy();
  return 0;
}
 四、编译运行
g++ -o main main.cpp -I/usr/local/include/oatpp-1.3.0/oatpp -L/usr/local/lib/oatpp-1.3.0 -std=c++11 -loatpp -lpthread
./main

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号