Crow for C++:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
\n

Crow — C++ 微 Web 框架

\n\n
\n

1. 这是什么以及为什么需要它

\n

\n Crow 是一个轻量级、快速且现代的 C++ 微 Web 框架,灵感来源于流行的 Python 框架 Flask。它旨在用最少的代码创建 REST API、Web 服务和简单的 Web 应用程序,无需复杂的配置。Crow 使用 C++17/20 编写,并利用 asio(或 boost.asio)库进行异步请求处理,使其成为同类中性能最高的解决方案之一。\n

\n

\n 为什么使用 Crow?如果您需要快速在 C++ 中部署一个 HTTP 服务器来处理 JSON 请求、提供静态文件或创建微服务,Crow 是理想的选择。与 drogon 或 pistache 等重量级框架不同,Crow 体积最小、API 简单,并且不需要代码生成或复杂的宏。它非常适合嵌入式系统、物联网设备、游戏服务器以及任何注重速度和低内存消耗的场景。\n

\n

\n Crow 支持路由(包括 URL 中的动态参数)、中间件、JSON 处理(通过内置库或 nlohmann/json)、WebSocket、CORS、multipart/form-data 等等。该框架正在积极开发中,拥有良好的文档和稳定的社区。\n

\n
\n\n
\n

2. 安装

\n

Crow 是一个 header-only 库(在大多数情况下),因此安装只需克隆仓库并包含头文件即可。但是,为了构建示例和项目,建议使用 CMake。

\n\n

方法 1:克隆(推荐用于开发)

\n
git clone https://github.com/CrowCpp/Crow.git\ncd Crow\nmkdir build\ncd build\ncmake ..\nmake\nsudo make install
\n\n

方法 2:使用 vcpkg

\n
vcpkg install crow
\n\n

方法 3:通过 CMake FetchContent 连接

\n
include(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,依赖项将自动拉取。

\n
\n\n
\n

3. 快速入门 — 最小工作示例

\n

创建一个包含以下内容的文件 main.cpp:

\n
#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

编译并运行:

\n
g++ -std=c++17 -pthread main.cpp -o crow_server\n./crow_server
\n

打开浏览器并访问 http://localhost:8080。您将看到欢迎消息。

\n
\n\n
\n

4. 主要方法/函数/类

\n\n
\n

4.1. crow::SimpleApp

\n

签名: class SimpleApp : public crow::App<Middleware...>

\n

功能: 应用程序的主类。管理路由、中间件和生命周期

推荐