【C++】开源:oatpp-web框架入门

这篇具有很好参考价值的文章主要介绍了【C++】开源:oatpp-web框架入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说到web开发,大家肯定会想到JS、Python,甚至Java,但应该不会想到C++。

用C++开发web也不是不行,这不,oatpp就是一个轻量、跨平台、高性能的web框架。

crow也是一个c++ web框架,类似于Python的Flask,参考安装入门如下:

http://t.csdn.cn/eI3zD

1. oatpp介绍

官网:https://oatpp.io/
文档:https://oatpp.io/docs/start
github地址:https://github.com/oatpp/oatpp

oatpp-web是一个基于C++的高性能Web框架,用于构建现代化、可扩展的Web应用程序和API服务。它提供了一整套工具和功能,方便开发人员设计、开发和维护高性能的Web应用。

以下是oatpp-web的主要特点和功能:

1.轻量级和高性能:oatpp-web具有高效的设计,以提供最佳的性能和资源利用。它采用异步I/O和事件驱动的编程模型,能够处理大量并发请求。

2.RESTful API支持:oatpp-web对RESTful风格的API提供了良好的支持。您可以使用注解方式定义路由和控制器,轻松创建和管理API端点。

3.HTTP/HTTPS协议支持:oatpp-web支持HTTP和HTTPS协议,可以安全地处理加密通信,并提供SSL/TLS配置选项。

4.中间件支持:oatpp-web提供了中间件机制,允许开发人员在请求处理过程中添加自定义的中间件组件。这样可以方便地实现例如身份验证、日志记录、缓存等功能。

5.数据库集成:oatpp-web可以与各种关系型数据库(如MySQL、PostgreSQL)和NoSQL数据库(如MongoDB)进行集成,通过ORM(对象关系映射)和查询构建器,方便地操作和管理数据。

6.内置JSON支持:oatpp-web内置了强大的JSON序列化和反序列化功能,可以快速地处理JSON数据。它支持将C++对象转换为JSON格式,并能够自动进行类型映射和验证。

7.测试和调试支持:oatpp-web提供了丰富的测试和调试工具,包括单元测试框架、集成测试支持和调试日志输出等,有助于开发人员快速验证和调试应用程序。

8.跨平台支持:oatpp-web支持多种操作系统和平台,包括Linux、Windows和MacOS等。您可以在不同环境中轻松部署和运行oatpp-web应用程序。

2. 环境搭建

编译安装:

# 下载源码
git clone https://github.com/oatpp/oatpp.git

# 编译
cd oatpp
mkdir build && cd build
cmake .. # (1.3.0需要cmake 3.20以上)
sudo make && sudo make install

c++ web框架,c++开源项目学习,c++,前端,git

3. 示例程序

运行一个基于oatpp框架的示例程序(响应hello world):

创建oatpp_demo目录,并创建CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(helloworld)
 
set(CMAKE_CXX_STANDARD 11)
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)

头文件handler.h,实现响应HttpRequestHandler:

// handler.h
#ifndef HANDLER_H
#define HANDLER_H
 
#include "oatpp/web/server/HttpRequestHandler.hpp"
 
#define O_UNUSED(x) (void)x;
 
// 自定义请求处理程序
class Handler : public oatpp::web::server::HttpRequestHandler
{
public:
    // 处理传入的请求,并返回响应
    std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
        O_UNUSED(request);
 
        return ResponseFactory::createResponse(Status::CODE_200, "Hello, World! This is oatpp_demo!");
    }
};
 
#endif // HANDLER_H

主程序main.cpp,提供路由Router请求:

// main.cpp
#include "oatpp/web/server/HttpConnectionHandler.hpp"
#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
#include "oatpp/network/Server.hpp"
#include "handler.h"
 
void run()
{
    // 为 HTTP 请求创建路由器
    auto router = oatpp::web::server::HttpRouter::createShared();
 
    // 路由 GET - "/hello" 请求到处理程序
    router->route("GET", "/hello", std::make_shared<Handler>());
 
    // 创建 HTTP 连接处理程序
    auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
 
    // 创建 TCP 连接提供者
    auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8080, oatpp::network::Address::IP_4});
 
    // 创建服务器,它接受提供的 TCP 连接并将其传递给 HTTP 连接处理程序
    oatpp::network::Server server(connectionProvider, connectionHandler);
 
    // 打印服务器端口
    OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
 
    // 运行服务器
    server.run();
}
 
int main()
{
    // 初始化 oatpp 环境
    oatpp::base::Environment::init();
 
    // 运行应用
    run();
 
    // 销毁 oatpp 环境
    oatpp::base::Environment::destroy();
 
    return 0;
}

cmake工程编译:

mkdir build && cd build
cmake ..
make

然后在浏览器打开:http://127.0.0.1:8080/hello

c++ web框架,c++开源项目学习,c++,前端,git

c++ web框架,c++开源项目学习,c++,前端,git

以上。文章来源地址https://www.toymoban.com/news/detail-721326.html

到了这里,关于【C++】开源:oatpp-web框架入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++ oatpp api服务端取get参数,post内容

    最近用oatpp做接口,部分功能已经上线,比较简单 1,取post  json 如上图  post    application/json 格式 首先定义post路由路径  然后我们完成Handler_Getxxx 函数,获取json,并取数据返回

    2024年02月02日
    浏览(42)
  • 【C++】开源:MQTT安装与入门案例

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍MQTT安装与配置使用。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 官网: https://mqtt.org/ MQTT 是一个基于 客户端-服务器 的 消息发布/订阅传

    2024年02月08日
    浏览(44)
  • 【C++】开源:jsoncpp库安装与使用入门

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍jsoncpp的使用。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 JsonCpp是一个开源的C++库,用于解析、生成和操作JSON格式数据。它支持标准的

    2024年02月16日
    浏览(30)
  • C++开源搜索引擎xapian开发入门

    开源搜索引擎框架和产品有很多,例如elasticsearch,sphinx,xapian,lucence,typesense,MeiliSearch 等,分别用不同的语言实现,具有类似但不完全相同的功能。准确来说不属于通用的搜索引擎,而是属于一种基于索引的文字检索系统。 考虑到方便将这种检索系统通过代码开发的形式

    2024年02月12日
    浏览(41)
  • 【C++】开源:多媒体SFML库使用入门

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍SFML库使用。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 SFML (Simple and Fast Multimedia Library) 是一个开源的、跨平台的C++多媒体库,它提供了

    2024年02月16日
    浏览(42)
  • 【openFrameworks】跨平台的 C++ 开源框架 | oF 文件结构 | 图形基础介绍

      💭 写在前面: 本章我们将介绍一个非常好用的跨平台的 C++ 开源框架 —— openFrameworks。它是一个开源的跨平台的 C++工具包,方便开发者创建出一个更简单和直观的框架,擅长开发图像和动画。     本篇博客全站热榜排名: 8 📜 本章目录: 0x00 openFrameworks 介绍 0x01 开启

    2024年02月02日
    浏览(59)
  • 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

    目录 一、前言 二、基本介绍 三、参数列表 四、XML报告输出格式 五、总结 使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行

    2024年02月07日
    浏览(71)
  • 开源C++智能语音识别库whisper.cpp开发使用入门

    whisper.cpp是一个C++编写的轻量级开源智能语音识别库,是基于openai的开源python智能语音模型whisper的移植版本,依赖项少,内存占用低,性能更优,方便作为依赖库集成的到应用程序中提供语音识别功能。 以下基于whisper.cpp的源码利用C++ api来开发实例demo演示读取本地音频文件

    2024年02月20日
    浏览(51)
  • C++ 测试框架 GoogleTest 初学者入门篇 丙

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/RIztusI3uKRnoHVf0sloeg 开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发者自测通过的,所以经常会听到开发者提起单元测试的话题。那么今天我就

    2023年04月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包