当前位置:   article > 正文

c++ oatpp编译与demo创建

oatpp

Oat++ 主页:oatpp.io

Oat++ 文档:oatpp.io/docs/start

GitHub 地址:github.com/oatpp/oatpp

其主要特性有:

  • 随处运行
    Oat++ 没有任何依赖性,可以很容易地移植到各种支持的平台上(Linux、MacOS、Windows)。
  • 构建健壮的api
    使用 Oat++ Simple-API,构建灵活而健壮的 API 既简单又有趣。
  • 处理 500 万个连接
    使用 Oat++ Async-API,可以在单个服务器上处理超过 500 万个并发连接。
  • 访问数据库
    Oat++ ORM 提供了一种简单而统一的方式来访问数据库
  • 保持代码一致
    Oat++ 在整个代码库中依靠对象映射来确保 API 和数据模型的一致性
  • 生成 API 文档
    使用 Swagger-UI 和 OpenAPI 3.0.0 自动记录 endpoints

vs2022编译Oatpp

创建build文件夹

cmake 选择 源码目录与生成目录

configure

generate

生成vs项目文件

vs2022 打开 oatpp.sln 然后编译,生成静态连接库。

创建一个demo   在oatpp_test_1

文件结构如下,将oatpp.lib与oatpp-test.lib 放入lib文件夹 

 将oatpp下的src文件copy到oatpp,注意结构,不然编译时找不到相关文件

 附加包含目录为刚编译的oatpp   src文件夹

附加依赖

oatpp.lib
oatpp-test.lib
wsock32.lib
ws2_32.lib

附加库目录为lib文件夹

编译运行:

浏览器访问 

中文教程地址:Async - Oatpp教程 (gitee.io) 

以下是使用Oat++框架编写一个接收文件的POST服务的示例代码:

  1. #include "oatpp/web/server/HttpConnectionHandler.hpp"
  2. #include "oatpp/network/server/SimpleTCPConnectionProvider.hpp"
  3. #include "oatpp/parser/multipart/Multipart.hpp"
  4. // 定义处理POST请求的处理器类
  5. class FileUploadHandler : public oatpp::web::server::HttpRequestHandler {
  6. public:
  7. // 处理POST请求
  8. std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
  9. auto multipart = request->getMultipart();
  10. if (multipart && multipart->isSuccess()) {
  11. // 从multipart获取文件数据
  12. auto fileStream = multipart->getFile("file");
  13. if (fileStream.get()) {
  14. // 在这里处理文件,例如保存到磁盘上或进行其他操作
  15. // ...
  16. return ResponseFactory::createResponse(Status::CODE_200, "File uploaded successfully");
  17. }
  18. }
  19. return ResponseFactory::createResponse(Status::CODE_400, "Invalid request or file not found");
  20. }
  21. };
  22. int main() {
  23. // 创建服务器连接提供者和HTTP连接处理程序
  24. auto connectionProvider = oatpp::network::server::SimpleTCPConnectionProvider::createShared(8000); // 设置端口号
  25. auto connectionHandler = oatpp::web::server::HttpConnectionHandler<FileUploadHandler>::createShared();
  26. // 配置并启动服务器
  27. connectionHandler->addEndpoint("/upload", std::make_shared<FileUploadHandler>()); // 添加自定义的URL路径和处理器
  28. oatpp::network::Server server(connectionProvider, connectionHandler);
  29. server.run();
  30. return 0;
  31. }

在这个示例中,我们创建了一个名为FileUploadHandler的自定义处理器类,用于处理POST请求。在handle方法中,我们从multipart获取文件数据,并可以进行相应的操作,例如保存到磁盘上或进行其他业务逻辑。然后根据处理结果返回不同的响应。

使用Oat++的Multipart API可以方便地解析multipart/form-data格式的请求数据,其中getFile方法用于获取上传的文件。

你可以根据需要调整和扩展此示例代码来满足你的具体需求。请确保已正确安装和配置Oat++框架以使其能够正常运行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/395263
推荐阅读
相关标签
  

闽ICP备14008679号