30分钟内用C++编写REST API:分步指南

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

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

开始课程

引言:为什么用C++编写REST API?



C++传统上与系统编程、游戏和高负载应用相关联。然而,现代C++(从C++11/17/20标准开始)提供了快速开发Web服务所需的所有工具。当需要最高性能、低内存消耗或与现有C++代码(例如计算机视觉库或数值计算)集成时,使用C++编写REST API是合理的。



在本指南中,我们将在30分钟内用C++创建一个功能完整的REST API。为此,我们将使用轻量且优雅的库Crow。它无需复杂配置,支持路由、JSON(通过json.hpp)和中间件。文章结束时,你将拥有一个包含三个端点的可用服务器。



步骤1:搭建环境并安装Crow



为此,我们需要一个支持C++17的编译器(g++ 7+、clang 5+或MSVC 2017+)和CMake构建系统。Crow是一个“仅头文件”的库,这简化了安装:只需下载一个头文件。



安装

  1. 从GitHub下载最新版本的Crow(或使用git clone)。
  2. 将include文件夹复制到你的项目中。
  3. 安装nlohmann/json(同样为仅头文件)以处理JSON。


项目结构

my_rest_api/├── CMakeLists.txt├── main.cpp└── include/    ├── crow.h    └── json.hpp


CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(my_rest_api)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

add_executable(my_rest_api main.cpp)target_link_libraries(my_rest_api pthread)


构建:mkdir build && cd build && cmake .. && make



步骤2:创建基础服务器和路由



Crow使用简单的DSL来定义路由。让我们创建一个监听8080端口并处理GET和POST请求的服务器。



基础服务器代码

#include "crow.h"#include <string>

int main() { crow::SimpleApp app;

// 简单的GET路由 CROW_ROUTE(app, "/")([](){ return "欢迎使用C++ REST API!"; });

// 带路径参数的GET CROW_ROUTE(app, "/user/<int>")([](int user_id){ return crow::response("用户ID: " + std::to_string(user_id)); });

app.port(8080).multithreaded().run();}


这段代码创建了两个端点。crow::SimpleApp是主应用程序类。multithreaded()方法启用了线程池中的请求处理。启动服务器,在浏览器中检查http://localhost:8080/。



路由中的参数类型

Crow支持路径中的以下参数类型:

  • <int> — 整数
  • <string> — 字符串
  • <path> — 路径剩余部分(例如 /files/<path>)
  • <float> — 浮点数


步骤3:使用JSON和处理POST请求



一个真正的REST API必须能够接收并返回JSON。让我们引入nlohmann/json并实现类似CRUD的操作。



示例:简单的内存“数据库”

#include "crow.h"#include "json.hpp"#include <unordered_map>#include <memory>

using json = nlohmann::json;

struct Task { int id; std::string title; bool completed;};

std::unordered_map<int, std::shared_ptr<Task>> tasks;int next_id = 1;

int main() { crow::SimpleApp app;

// GET /tasks — 获取所有任务 CROW_RO

博客

书籍推荐