没有合适的资源?快使用搜索试试~ 我知道了~
C++下web框架corw的完全使用手册(实现中文支持)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 174 浏览量
2023-02-20
19:04:14
上传
评论
收藏 275KB PDF 举报
温馨提示
试读
25页
corw是一个开源、轻量化的c++web库,在使用上与python的flask是类似的。本文档为corw的完整使用文档,含项目配置(基于cmakelist)、路由绑定、返回数据(json、文本、response对象、静态资源、模板文件)、接口请求处理(REST请求,url参数绑定、json请求、GET参数和POST参数)和各种高级操作(Cookie操作、Session操作、文件上传操作、文件下载操作、websocket操作、自定义loghandler)。此外,还对各类参数请求、结果返回过程中对中文的支持(如get参数、post参数、url参数、json结果中中文参数的正确解读)
资源推荐
资源详情
资源评论
corw是一个开源、轻量化的c++web库,在使用上与python的flask是类似的。本文档为corw的完
整使用文档,含项目配置(基于cmakelist)、路由绑定、返回数据(json、文本、response对象、
静态资源、模板文件)、接口请求处理(REST请求,url参数绑定、json请求、GET参数和POST
参数)和各种高级操作(Cookie操作、Session操作、文件上传操作、文件下载操作、websocket
操作、自定义loghandler)。此外,还对各类参数请求、结果返回过程中对中文的支持(如get
参数、post参数、url参数、json结果中中文参数的正确解读)
1 基本基本设置置
crow库官网:https://crowcpp.org/master/guides/app/
crow库源码:https://gitcode.net/mirrors/CrowCpp/Crow
1.1 Camkelist
项目的cmake文件如下,需要添加对asio、boost库的依赖,其中还补充了msysql库依赖(需要安
装mysql)。
Asio库----》https://think-async.com/Asio/
下载地址:https://nchc.dl.sourceforge.net/project/asio/asio/1.26.0 (Stable)/asio-1.26.0.zip
boost库----》https://www.boost.org/
下载地址:https://www.boost.org/users/news/
cmake_minimum_required(VERSION 3.5.1)
#生成生成项目的名称
project(CmakeTest)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_SUPPRESS_REGENERATION FALSE)
#设置生成release项目
set(CMAKE_BUILE_TYPE Release)
set(CMAKE_CXX_STANDARD 17)
# It prevents the decay to cpp98 when the compiler does not support cpp14
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# It disables the use of compiler-specific extensions
# e.g. -std=cpp14 rather than -std=gnu++14
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
file(GLOB SOURCE_FILES src/*.cpp)
set(msysql_dir "C:/Program Files/MySQL/MySQL Server 8.0")
include_directories(
${msysql_dir}/include
E:/Lib/Crow-master/include
E:/Lib/boost_1_77_0
E:/Lib/asio-1.26.0/include
${PROJECT_SOURCE_DIR}/include
)
link_directories(
E:/Lib/boost_1_77_0/stage/lib
${msysql_dir}/lib
${PROJECT_SOURCE_DIR}/include
)
add_executable(${CMAKE_PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(
${CMAKE_PROJECT_NAME}
libmysql.lib
${Opencv_lib}
)
1.2 起步起步设置置
起步设置,设置对session的支持,
using Session = crow::SessionMiddleware<crow::InMemoryStore>;
crow::App<crow::CookieParser, Session> app{ Session{
// customize cookies
crow::CookieParser::Cookie("session").max_age(/*one day*/ 24 * 60 * 60).path("/"),
// set session id length (small value only for demonstration purposes)
4,
// init the store
crow::InMemoryStore{}} };
app.loglevel(crow::LogLevel::Warning);
官网完整起步代码,gitcode地址 https://gitcode.net/mirrors/CrowCpp/Crow
#include "crow.h"
int main()
{
crow::SimpleApp app;
CROW_ROUTE(app, "/")([](){
return "Hello world";
});
app.port(18080).multithreaded().run();
}
1.3 首首页绑定定
可以用于绑定静态文件
//首页绑定
CROW_ROUTE(app, "/")([](const crow::request&, crow::response& res) {
res.set_static_file_info("templates/index.html");
res.end();
//return u8"你好 世界!";
});
1.4 静静态文件支持文件支持
在做路由函数外部,设置静态文件目录,可以实现全局下的静态资源访问
//设置对静态文件的支持
crow::response response;
response.set_static_file_info("./");
2、返回各种数据、返回各种数据
2.1 返回字符串返回字符串
//返回字符串
CROW_ROUTE(app, "/api1")([]() {
return "Hello world";
});
2.2 返回返回json
{{"name", "lisi"},{"age","32"}}对应json字符串{"name":"lisi","age":"32"},在crow中以以{name,
value}构成json中的键值对
//返回json
CROW_ROUTE(app, "/json")([] {
crow::json::wvalue x({ {"message", "Hello, World!"} });
//添加新字段
x["message2"] = "Hello, World.. Again!";
return x.dump();
//return x;
});
//返回json数组
CROW_ROUTE(app, "/jsonarr")([] {
crow::json::wvalue x({
{{"name", "lisi"},{"age","32"}},
{{"name", "zhangsan"},{"age","28"}}
});
x[0]["message2"] = "new ";
return x;
});
2.3 返回返回response对象象
前面的各种返回其实也是返回response对象,只是没有显性表示。这里可以实例化response对
象,然后设置返回的具体对象
//response细节
CROW_ROUTE(app, "/response/<int>")
([](int count) {
//返回404
crow::response resp;
resp.code = 404;
resp.body = "response body";
//return resp;
//返回重定向
crow::response res;
res.redirect("/");
//return res;
if (count > 100) {
//
// response(int code, std::string contentType, std::string body)
return crow::response(500);
//return crow::response(400);
}
std::ostringstream os;
os << count << " bottles of beer!";
return crow::response(os.str());
});
2.4 返回静返回静态页面面
在路由函数中返回静态页面
CROW_ROUTE(app, "/")([](){
auto page = crow::mustache::load_text("fancypage.html");
return page;
});
2.5 返回静返回静态资源源
在路由函数中返回静态资源文件
剩余24页未读,继续阅读
资源评论
- HughieDeng2024-04-15感谢大佬分享的资源,对我启发很大,给了我新的灵感。
万里鹏程转瞬至
- 粉丝: 2w+
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功