当前位置:   article > 正文

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

c++ 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

使用 构建一个helloworld项目

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

jiangyi@jixx:~/oatpp_helloworld$ tree
.
├── build.sh
├── CMakeLists.txt
├── handler.h
└── main.cpp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

#!/bin/bash

PROJECT_DIR=~/oatpp_helloword

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

# 运行可执行文件
#./oatpp_back 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

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

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

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)                     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如果没有开启,则使用:

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

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

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

闽ICP备14008679号