
Crow 是一个极简、头文件-only 的 C++ Web 框架,适合嵌入式、工具类服务或需要轻量 HTTP 接口的场景。它不依赖 Boost、不带运行时组件,编译快、体积小、上手直接——核心就是包含头文件 + 写路由 + 启动服务器。
一、快速开始:三步跑起一个 Hello World
1. 下载 crow.h(单个头文件):
→ 官方 GitHub release 页面获取最新版(如 crow.h),或用 git clone(推荐 submodule 方式管理)
2. 编写 main.cpp:
- 包含 #include "crow.h"
- 定义路由:用 CROW_ROUTE(app, "/")([](){ return "Hello, Crow!"; });
- 启动:调用 app.port(8080).multithreaded().run();
3. 编译(需 C++14 或更高):
g++ -std=c++17 -pthread main.cpp -o server
运行 ./server,访问 http://localhost:8080 即可看到响应。
二、处理参数和 JSON(最常用功能)
Crow 原生支持 URL 参数、查询字符串、表单和 JSON 请求体:
-
路径参数:CROW_ROUTE(app, "/user/
")([](int id){ return std::to_string(id); }); - 查询参数:CROW_ROUTE(app, "/search")([](const crow::request& req){ auto q = req.url_params.get("q"); return q ? q.value() : "no query"; });
-
JSON 请求体:需手动解析(Crow 不内置 JSON 库),推荐搭配 nlohmann/json:
→ #include "nlohmann/json.hpp"
→ 在路由中:auto j = nlohmann::json::parse(req.body);
三、返回结构化响应(JSON / 状态码 / Header)
默认返回是字符串,但实际开发中常需控制格式与状态:
- 返回 JSON 字符串并设 Content-Type:
return crow::response(200, j.dump(), {{"Content-Type", "application/json"}}); - 返回错误码:return crow::response(400, "Bad Request");
- 设置 Cookie 或自定义 Header:
crow::response res("OK"); res.add_header("X-Frame-Options", "DENY"); return res;
四、进阶提示:静态文件、中间件、跨域
• 静态文件服务:Crow 本身不内置静态文件处理器,但可用 CROW_ROUTE(app, "/static/
• 简单中间件:通过重载 app.middleware 添加全局前置逻辑(如日志、鉴权):
app.middleware([](const crow::request& req, crow::response& res, crow::middleware::context& ctx){ /* log or check */ });
• CORS 支持:在响应中统一加 Header:
res.add_header("Access-Control-Allow-Origin", "*");
res.add_header("Access-Control-Allow-Methods", "GET,POST,OPTIONS");











