c++开源web框架 oatpp的安装以及使用

c++开源web框架 oatpp的安装以及使用

前言

这里我安装的是最新版本的oatpp,版本为1.4.0,环境为:Ubuntu 22.04.4 LTS,cmake:3.22,关于oatpp的介绍这里不再赘述。

安装

// 克隆 Oatpp 仓库:
git clone https://github.com/oatpp/oatpp.git

cd oatpp
// 创建构建目录并生成项目:
cd oatpp
mkdir build && cd build
cmake ..	// 注意,如果是1.3.0及以上版本需要使用cmake 3.20 及以上版本
sudo make && sudo make install

然后等待编译安装完成即可!

使用 构建一个helloworld项目

首先创建文件,目录树大致如下:

jiangyi@jixx:~/oatpp_helloworld$ tree
.
├── build.sh
├── CMakeLists.txt
├── handler.h
└── main.cpp

main.cpp 代码如下:

// main.cpp
#include "handler.h"
#include "oatpp/Environment.hpp"
#include "oatpp/network/Server.hpp"
#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
#include "oatpp/web/server/HttpConnectionHandler.hpp"
void run() {
  // 为 HTTP 请求创建路由器
  auto router = oatpp::web::server::HttpRouter::createShared();

  // 路由 GET - "/helloworld" 请求到处理程序
  router->route("GET", "/helloworld", std::make_shared<Handler>());

  // 创建 HTTP 连接处理程序
  auto connectionHandler =
      oatpp::web::server::HttpConnectionHandler::createShared(router);

  // 创建 TCP 连接提供者,注意:我是通过ssh连接到ubuntu server,在局域网下进行使用,
  // 所以使用了0.0.0.0,如果是在本机电脑进行编译使用的话使用127.0.0.1即可满足使用。
  auto connectionProvider =
      oatpp::network::tcp::server::ConnectionProvider::createShared(
          {"0.0.0.0", 8082, oatpp::network::Address::IP_4});

  // 创建服务器,它接受提供的 TCP 连接并将其传递给 HTTP 连接处理程序
  oatpp::network::Server server(connectionProvider, connectionHandler);
  
  // 打印日志
  OATPP_LOGi("oatpp_helloworld", "Server running");

  // 运行服务器
  server.run();
}

int main() {
  // 初始化 oatpp 环境
  oatpp::Environment::init();

  // 运行应用
  run();

  // 销毁 oatpp 环境
  oatpp::Environment::destroy();

  return 0;
}

handler.h 代码如下:

// handler.h
#ifndef HANDLER_H
#define HANDLER_H

#include "oatpp/web/server/HttpRequestHandler.hpp"

// 自定义请求处理程序
class Handler : public oatpp::web::server::HttpRequestHandler {
public:
  // 处理传入的请求,并返回响应
  std::shared_ptr<OutgoingResponse>
  handle(const std::shared_ptr<IncomingRequest> &request) override {
    return ResponseFactory::createResponse(Status::CODE_200, "Hello, World!");
  }
};

#endif // HANDLER_H

CMakeLists.txt 代码如下:

cmake_minimum_required(VERSION 3.1)
project(helloworld)
 
# 设置c++ 标准为c++ 17
set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES main.cpp handler.h)
 
# 查找 oatpp 依赖
find_package(oatpp REQUIRED)
 
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
 
# 将目标文件与库文件进行链接
target_link_libraries(${PROJECT_NAME} oatpp::oatpp)

这里我方便进行构建项目,所以编写了一个脚本,(主要是为了偷懒)
build.sh 如下:

#!/bin/bash

PROJECT_DIR=~/oatpp_helloword

cd $PROJECT_DIR
rm -rf build
mkdir build
cd build
cmake ..
make

# 运行可执行文件
#./oatpp_back 

最后运行即可,后端运行后在 浏览器访问:

http://192.168.31.5:8082/helloworld	// 局域网
http://127.0.0.1:8082/helloworld	// 本机

得到
在这里插入图片描述
注意:如果在局域网模式下使用,请务必查看防火墙对应的端口是否开启:

jiangyi@jilk:~/code/xunqin/oatpp_helloworld/build$ sudo ufw status
状态: 激活

至                          动作          来自
-                          --          --
22/tcp                     ALLOW       Anywhere                        
8082/tcp                   ALLOW       Anywhere                             
22/tcp (v6)                ALLOW       Anywhere (v6)                     
8082/tcp (v6)              ALLOW       Anywhere (v6)                     

如果没有开启,则使用:

sudo ufw allow 8082 // 对应你的端口号

至此以上。如果有什么问题,欢迎大佬评论区讨论指正。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OATPP是一个C++ Web框架,它提供了许多现代化的Web开发特性,并且易于使用。下面是使用OATPP搭建Web服务器的步骤: 1. 安装OATPP库。可以通过以下命令在Ubuntu上安装: ``` $ sudo apt-get update $ sudo apt-get install liboatpp-1.1-dev ``` 2. 创建一个新的C++项目,并添加OATPP库的依赖。 3. 创建一个新的OATPP应用程序。可以通过以下代码创建: ```c++ #include "oatpp/oatpp.hpp" class MyController : public oatpp::web::server::api::ApiController { public: MyController(const std::shared_ptr<ObjectMapper>& objectMapper) : oatpp::web::server::api::ApiController(objectMapper) {} ENDPOINT("GET", "/", root) { return createResponse(Status::CODE_200, "Hello World!"); } }; ``` 该代码创建了一个名为MyController的控制器,它有一个名为root的处理函数。当收到GET请求并且路径为“/”时,该函数将返回一个带有“Hello World!”消息的HTTP响应。 4. 创建一个OATPP服务器实例。可以通过以下代码创建: ```c++ #include "oatpp/network/server/Server.hpp" void run() { oatpp::base::Environment::init(); /* Create Router */ auto router = oatpp::web::server::HttpRouter::createShared(); /* Add MyController */ auto myController = std::make_shared<MyController>(router->getObjectMapper()); router->addController(myController); /* Create HttpConnectionHandler */ auto connectionHandler = oatpp::network::server::HttpConnectionHandler::createShared(router); /* Create server */ oatpp::network::server::Server server(connectionHandler); /* Run server */ OATPP_LOGI("MyApp", "Server running on port %s", server.getAddress().toString().c_str()); server.run(); oatpp::base::Environment::destroy(); } ``` 该代码创建了一个名为“server”的OATPP服务器实例,并将其绑定到默认端口(8080)。它还将MyController添加到路由器中,并将路由器传递给HTTP连接处理程序。 5. 启动服务器。可以通过调用run()函数来启动服务器。 ```c++ int main() { run(); return 0; } ``` 现在,你已经成功地使用OATPP搭建了一个Web服务器,并可以通过发送GET请求并访问“http://localhost:8080/”来测试它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江一_a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值