说到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可在Linux和Windows上通用,无需其他依赖。
2. 环境搭建
编译安装:
下载源码:
git clone https://github.com/oatpp/oatpp.git
编译:
cd oatpp
mkdir build &&cd build
cmake ..sudomake&&sudomakeinstall
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#ifndefHANDLER_H#defineHANDLER_H#include"oatpp/web/server/HttpRequestHandler.hpp"#defineO_UNUSED(x)(void)x;// 自定义请求处理程序classHandler:public oatpp::web::server::HttpRequestHandler{public:// 处理传入的请求,并返回响应
std::shared_ptr<OutgoingResponse>handle(const std::shared_ptr<IncomingRequest>& request)override{O_UNUSED(request);returnResponseFactory::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"voidrun(){// 为 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();}intmain(){// 初始化 oatpp 环境
oatpp::base::Environment::init();// 运行应用run();// 销毁 oatpp 环境
oatpp::base::Environment::destroy();return0;}
cmake工程编译:
mkdir build &&cd build
cmake ..make
然后在浏览器打开:
http://127.0.0.1:8080/hello
以上。
版权归原作者 DevFrank 所有, 如有侵权,请联系我们删除。