C++11 http服务端和客户端库cpp-httplib

server/2024/12/2 0:22:39/
http://www.w3.org/2000/svg" style="display: none;">

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)

http://www.ppmy.cn/server/146575.html

相关文章

vscode的项目给gitlab上传

目录 一.创建gitlab帐号 二.在gitlab创建项目仓库 三.Windows电脑安装Git 四.vscode项目git上传 一.创建gitlab帐号 二.在gitlab创建项目仓库 图来自:Git-Gitlab中如何创建项目、创建Repository、以及如何删除项目_gitlab新建项目-CSDN博客&#xff09; 三.Windows电脑安…

『VUE』elementUI dialog的子组件created生命周期不刷新(详细图文注释)

目录 1. 测试代码分析令人迷惑的效果 分析原因解决方法 如何在dialog中反复触发created呢?总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 主要是在做表单的时候想要有一个编辑表单在dialog弹窗中出现,同时dialog调用的封装的…

【Leetcode】3232.判断是否可以赢得数字游戏

题目链接&#xff1a; https://leetcode.cn/problems/find-if-digit-game-can-be-won/description/?envTypedaily-question&envId2024-11-30 题目描述&#xff1a; 解题思路&#xff1a; 将数组中小于10的元素相加求和得到sum1&#xff0c;大于等于10的元素相加求和得到…

安卓-碎片的使用入门

1.碎片(Fragment)是什么 Fragment是依赖于Activity的&#xff0c;不能独立存在的,是Activity界面中的一部分&#xff0c;可理解为模块化的Activity,它能让程序更加合理和充分地利用大屏幕的空间&#xff0c;因而在平板上应用得非常广泛. Fragment不能独立存在&#xff0c;必须…

XRD精修教程:CMPR软件介绍-测试狗

1 引言 在使用GSAS软件进行XRD精修时&#xff0c;我们常常需要对数据格式进行转换&#xff0c;初步进行峰形拟合&#xff0c;处理GSAS结果等工作。那么&#xff0c;CMPR软件就是必不可少的。CMPR软件是由美国国家标准与技术研究院中子研究中心的Brian H. Toby编写的免费通用的…

高效处理 iOS 应用中的大规模礼物数据:以直播项目为例(1-礼物池)

引言 在现代iOS应用开发中&#xff0c;处理大规模数据是一个常见的挑战。尤其实在直播项目中&#xff0c;礼物面板作为展示用户互动的重要部分&#xff0c;通常需要实时显示海量的礼物数据。这些数据不仅涉及到不同的区域、主播的动态差异&#xff0c;还需要保证高效的加载与渲…

Java中TimedCache缓存对象的详细使用

一、TimedCache 是什么&#xff1f; TimedCache是一个泛型类&#xff0c;它的主要作用通常是在一定时间范围内对特定键值对进行缓存&#xff0c;并且能够根据设定的时间策略来自动清理过期的缓存项。 TimedCache是一种带有时间控制功能的缓存数据结构。在 Java 中&#xff0c…

【Docker】部署nginx

docker部署nginx docker部署nginx镜像加速器1、拉取nginx镜像2、创建nginx容器3、浏览器访问 docker部署nginx 镜像加速器 备注&#xff1a;阿里云镜像加速地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors可用的镜像源&#xff1a; https://https://reg…