Crow — C++ 微 Web 框架
\n\n1. 这是什么以及为什么需要它
\n\n Crow 是一个轻量级、快速且现代的 C++ 微 Web 框架,灵感来源于流行的 Python 框架 Flask。它旨在用最少的代码创建 REST API、Web 服务和简单的 Web 应用程序,无需复杂的配置。Crow 使用 C++17/20 编写,并利用 asio(或 boost.asio)库进行异步请求处理,使其成为同类中性能最高的解决方案之一。\n
\n 为什么使用 Crow?如果您需要快速在 C++ 中部署一个 HTTP 服务器来处理 JSON 请求、提供静态文件或创建微服务,Crow 是理想的选择。与 drogon 或 pistache 等重量级框架不同,Crow 体积最小、API 简单,并且不需要代码生成或复杂的宏。它非常适合嵌入式系统、物联网设备、游戏服务器以及任何注重速度和低内存消耗的场景。\n
\n Crow 支持路由(包括 URL 中的动态参数)、中间件、JSON 处理(通过内置库或 nlohmann/json)、WebSocket、CORS、multipart/form-data 等等。该框架正在积极开发中,拥有良好的文档和稳定的社区。\n
2. 安装
\nCrow 是一个 header-only 库(在大多数情况下),因此安装只需克隆仓库并包含头文件即可。但是,为了构建示例和项目,建议使用 CMake。
\n\n方法 1:克隆(推荐用于开发)
\ngit clone https://github.com/CrowCpp/Crow.git\ncd Crow\nmkdir build\ncd build\ncmake ..\nmake\nsudo make install\n\n 方法 2:使用 vcpkg
\nvcpkg install crow\n\n 方法 3:通过 CMake FetchContent 连接
\ninclude(FetchContent)\nFetchContent_Declare(\n crow\n GIT_REPOSITORY https://github.com/CrowCpp/Crow.git\n GIT_TAG v1.0.0\n)\nFetchContent_MakeAvailable(crow)\n\ntarget_link_libraries(your_project PRIVATE Crow::Crow)\n\n 重要提示:Crow 需要支持 C++17 的编译器(gcc 8+、clang 7+、MSVC 2019+)。还需要 asio(或 boost.asio)库。如果您使用 vcpkg,依赖项将自动拉取。
3. 快速入门 — 最小工作示例
\n创建一个包含以下内容的文件 main.cpp:
#include "crow.h"\n\nint main() {\n crow::SimpleApp app;\n\n // 为根 URL 定义路由\n CROW_ROUTE(app, "/")([](){\n return "Hello, Crow!";\n });\n\n // 在端口 8080 上启动服务器\n app.port(8080).multithreaded().run();\n}\n 编译并运行:
\ng++ -std=c++17 -pthread main.cpp -o crow_server\n./crow_server\n 打开浏览器并访问 http://localhost:8080。您将看到欢迎消息。
4. 主要方法/函数/类
\n\n4.1. crow::SimpleApp
\n 签名: class SimpleApp : public crow::App<Middleware...>
功能: 应用程序的主类。管理路由、中间件和生命周期