httpcpphttplib_0">C++11 http服务端和客户端库cpp-httplib
环境:
http: yhirose/cpp-httplib v0.18.1
json: nlohmann/json v3.11.3
1. 简介
cpp-httplib 是一个轻量级且易于使用的 C++11 HTTP 库,由 yhirose 开发和维护,开源协议为MIT。它支持 HTTP/HTTPS 协议,可用于创建简单的客户端和服务器应用程序。
主要特性:
- 支持 Windows、macOS 和 Linux等操作系统
- 支持 HTTP/1.1 和 HTTPS 协议
- 支持 GET、POST、PUT、DELETE 等 HTTP 方法
- 支持文件上传和下载
- 支持自定义响应头和请求头
- 支持压缩和解压缩(如 gzip)
- 支持路由功能,可以匹配和处理不同的 URL 路径
项目仓库地址:https://github.com/yhirose/cpp-httplib
http_22">2. http服务端代码
main.cpp
#include "httplib.h"
#include "json.hpp"#include <iostream>using namespace httplib;
using json = nlohmann::json;int main()
{Server httpServer;// /testhttpServer.Get("/test",[](const Request &req, Response &res){json response = json::parse(R"({"code":0,"message":"success","data":[1,2,3]})");res.set_content(response.dump(), "application/json");});// /user/:usernamehttpServer.Post("/user/:username",[](const Request &req, Response &res){auto username = req.path_params.at("username");json response = {{"code", 0}, {"message", "success"}, {"data", {{"username", username}}}};res.set_content(response.dump(), "application/json");});// /exithttpServer.Get("/exit",[&](const Request &req, Response &res){httpServer.stop();});std::cout << "http://0.0.0.0:8080" << std::endl;std::cout << "GET /test" << std::endl;std::cout << "POST /user/:username" << std::endl;std::cout << "GET /exit" << std::endl;httpServer.listen("0.0.0.0", 8080);return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.11)project(main)add_executable( ${PROJECT_NAME} main.cpp json.hpp httplib.h)