说到web开发,大家肯定会想到JS、Python,甚至Java,但应该不会想到C++。
用C++开发web也不是不行,这不,oatpp就是一个轻量、跨平台、高性能的web框架。
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 ..
sudo make && sudo make install
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:
#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
主程序main.cpp,提供路由Router请求:
#include "oatpp/web/server/HttpConnectionHandler.hpp"
#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
#include "oatpp/network/Server.hpp"
#include "handler.h"
void run()
{
auto router = oatpp::web::server::HttpRouter::createShared();
router->route("GET", "/hello", std::make_shared<Handler>());
auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8080, oatpp::network::Address::IP_4});
oatpp::network::Server server(connectionProvider, connectionHandler);
OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
server.run();
}
int main()
{
oatpp::base::Environment::init();
run();
oatpp::base::Environment::destroy();
return 0;
}
cmake工程编译:
mkdir build && cd build
cmake ..
make
然后在浏览器打开:http://127.0.0.1:8080/hello
以上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)