Qat++,轻量级开源C++ Web框架

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

目录

一.简介

二.编译Oat++

1.环境

2.编译/安装

三.试用

1.创建一个 CMake 项目

2.自定义客户端请求响应

3.将请求Router到服务器

4.用浏览器验证


Qat++,轻量级开源C++ Web框架,# C++优秀开源库,开源,c++,web框架,Qat++,跨平台

一.简介

Oat++是一个面向C++的现代Web框架
官网地址:https://oatpp.io
github地址:https://github.com/oatpp/oatpp
Oat++具有如下特性:
●随处运行
Oat++没有任何依赖性,可以很容易地移植到各种支持的平台上(Linux、BSD、MacOS、OpenWRT、Windows)。
●构建健壮的api
使用Oat++的Simple-API,很容易就能构建出灵活而健壮的High-Level API。
●高并发
使用Oat++的Async-API,可以在单个服务器上处理超过500万个并发连接。
●访问数据库
Oat++ ORM提供了一种简单而统一的方式来访问数据库。
●保持代码一致
Oat++在整个代码中依靠对象映射(Object-Mapping)来确保API和数据模型的一致性。详见:更多
●生成API文档
使用Swagger-UI和OpenAPI 3.0.0自动记录endpoints。详见:更多
Qat++可以应用于多种不同的领域,比如构建运行在嵌入式设备的REST API,构建微服务和高负载的云应用程序。目前主要的应用案例是IOT和Robotics。
那么在实践中该如何选择Oat++的API类型呢?
优先选择Simple API,因为它开发得更加完善。如果是并发任务,就可以考虑使用Async API了,Async API通常用于以下几种场景:
●文件上传、下载
●向大量客户端推流
●Websocket聊天服务器
说起Web开发,大多数人会想到 Java、Python、Golang ... ,因为用它们实现的主流Web框架有很多:Java有非常知名的Spring全家桶,Python有大而全的Django、小而精的Flask、高性能的Tornado,Golang也有快速灵活的Gin、Echo等框架。
不过现在做C/C++开发的同学可以收回羡慕的眼神啦,Oat++作为C/C++ Web框架的后起之秀,还是非常值得研究的。

二.编译Oat++

这里以Windows为例,其他平台可参考官网。

1.环境

Window 10
Visual Studio 2017(官网测试用的就是这个版本)
CMake 3.25.1(推荐用最新版)

2.编译/安装

以管理员权限打开“VS 2017的开发人员命令提示符”窗口
否则安装的时候会报如下错误:
Qat++,轻量级开源C++ Web框架,# C++优秀开源库,开源,c++,web框架,Qat++,跨平台

git clone https://github.com/oatpp/oatpp.git
cd oatpp
MD build
cd build
cmake ..
cmake --build . --target INSTALL

常用CMake参数表

参数 默认值 说明
CMAKE_BUILD_TYPE Debug 编译类型
BUILD_SHARED_LIBS OFF 默认值为OFF,此时 Oat++ 被编译Wie静态库.
OATPP_BUILD_TESTS ON 如果设置为OFF,表示不编译tests
OATPP_DISABLE_ENV_OBJECT_COUNTERS OFF 如果设置为ON, 不统计oatpp对象(不检测内存泄漏),可以提升性能
注意: 不要用OFF去编译或运行 tests, 因为tests不检测内存泄漏.
OATPP_DISABLE_POOL_ALLOCATIONS OFF 如果设置为ON,不使用 oatpp memory-pools.
OATPP_COMPAT_BUILD_NO_THREAD_LOCAL OFF 编译时禁用thread_local特性,详见 #81.

 几分钟就能编译安装完成,无报错。安装路径是:C:/Program Files (x86)/oatpp/lib/oatpp-1.3.0/oatpp
下图是执行cmake ..时的打印信息:
Qat++,轻量级开源C++ Web框架,# C++优秀开源库,开源,c++,web框架,Qat++,跨平台

三.试用

1.创建一个 CMake 项目

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)

2.自定义客户端请求响应

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!");
    }
};
 
#endif // HANDLER_H

3.将请求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 - "/HelloWorld" 请求到处理程序
    router->route("GET", "/HelloWorld", std::make_shared<Handler>());
 
    // 创建 HTTP 连接处理程序
    auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
 
    // 创建 TCP 连接提供者
    auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, 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;
}

4.用浏览器验证

运行上面的服务器程序

Qat++,轻量级开源C++ Web框架,# C++优秀开源库,开源,c++,web框架,Qat++,跨平台

在浏览器中访问http://localhost:8000/HelloWorld,就会显示“Hello,World!”

Qat++,轻量级开源C++ Web框架,# C++优秀开源库,开源,c++,web框架,Qat++,跨平台
参考链接:https://waleon.blog.csdn.net/article/details/120376280
原文链接:Qat++,轻量级开源C++ Web框架-CSDN博客文章来源地址https://www.toymoban.com/news/detail-789447.html

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

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

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

相关文章

  • C++轻量级单元测试框架

    单元测试是构建稳定、高质量的程序、服务或系统的必不可少的一环。通过单元测试,我们可以在开发过程中及时发现和修复代码中的问题,提高代码的质量和可维护性。同时,单元测试也可以帮助我们更好地理解代码的功能和实现细节,从而更好地进行代码重构和优化。

    2023年04月25日
    浏览(48)
  • 架构:Oracle推出开源轻量级Java微服务框架Helidon

    在当今数字化时代,微服务架构已经成为构建灵活、可伸缩和高度可维护的应用程序的首选方式之一。Java一直以其稳定性和跨平台性而闻名,而Oracle则一直是Java的领先开发者之一。为了满足不断增长的微服务市场需求,Oracle于近年推出了开源的轻量级Java微服务框架Helidon,为

    2024年02月02日
    浏览(39)
  • 初识Flask:Python轻量级Web框架入门教程

    Flask是一个用Python编写的轻量级Web应用框架。由于其“微”性质,Flask在提供核心服务的同时,仍然提供了许多扩展的可能性。在这篇文章中,我们将从最基础开始,学习如何使用Flask构建一个Web应用。 首先,你需要安装Flask库。使用pip进行安装是最简单的方式: 接着,我们来

    2024年02月14日
    浏览(38)
  • 轻量级web开发框架:Flask本地部署及实现公网访问界面

    本篇文章讲解如何在本地安装Flask,以及如何将其web界面发布到公网上并进行远程访问。 Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团

    2024年02月05日
    浏览(38)
  • python轻量级web框架flask初探,搭建网站原来这么简单

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月19日
    浏览(45)
  • python Web开发 flask轻量级Web框架实战项目--学生管理系统

     上次发的一篇文章,有很多朋友私信我要后面的部分,那咱们就今天来一起学习一下吧,因为我的数据库这门课选中的课题是学生管理系统,所以今天就以这个课题为例子,从0到1去实现一个管理系统。数据库设计部分我会专门出一个博客的,敬请期待吧~~~ 介如很多朋友问

    2024年02月16日
    浏览(38)
  • Linux下C++轻量级WebServer服务器 框架梳理

    WebServer是一个很好的入门级C++项目,因为它涉及到了方方面面,不仅可以提高编程能力,还包括了操作系统、计算机网络、数据库等方面的知识,所以我很推荐大家去入手这个项目。说细一点这个项目包含系统编程、日志系统、线程池、网络知识、并发模型等实现,但是很多

    2024年03月15日
    浏览(63)
  • 轻量级Web报表工具ActiveReportsJS全新发布v4.0,支持集成更多前端框架!

    ActiveReportsJS 是一款基于 JavaScript 和 HTML5 的轻量级Web报表工具,采用拖拽式设计模式,不需任何服务器和组件支持,即可在 Mac、Linux 和 Windows 操作系统中,设计多种类型的报表。ActiveReportsJS 同时提供跨平台报表设计、纯前端报表展示、多数据源绑定、前端打印导出等功能,

    2024年02月15日
    浏览(29)
  • 轻量级 C++ UI 库:快速、可移植、自包含 | 开源日报 No.168

    Stars: 53.4k License: MIT imgui 是 C++ 的无臃肿图形用户界面,具有最小的依赖关系。 该项目的主要功能、关键特性、核心优势包括: 为 C++ 提供了一个轻量级的图形用户界面库 输出优化的顶点缓冲区,可在 3D 渲染应用程序中随时呈现 快速、可移植、与渲染器无关,并且自包含(

    2024年04月15日
    浏览(31)
  • 轻量级web开发框架Flask本地部署及无公网ip远程访问界面

    本篇文章讲解如何在本地安装Flask,以及如何将其web界面发布到公网上并进行远程访问。 Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团

    2024年02月04日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包