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

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

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.mzph.cn/bicheng/62238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样使用sys.dm_os_wait_stats

文章目录 sys.dm_os_wait_stats 支持诊断 SQL Server 性能问题的基本指标。如果在 SQL Server 引擎中遇到一些问题&#xff08;CPU、内存、I/O、锁、闩锁等&#xff09;&#xff0c;sys.dm_os_wait_stats 数据揭示一些问题。SQL Server Management Studio 中的活动监视器&#…

Hbase2.2.7集群部署

环境说明 准备三台服务器&#xff0c;分别为&#xff1a;bigdata141&#xff08;作为Hbase主节点&#xff09;、bigdata142、bigdata143确保hadoop和zookeeper集群都先启动好我这边的hadoop版本为3.2.0&#xff0c;zookeeper版本为3.5.8 下载安装包 下载链接&#xff1a;In…

JVM 性能调优 -- CMS 垃圾回收器 GC 日志分析【Full GC】

前言&#xff1a; 上一篇我们分析了 Minor GC 的发生过程&#xff0c;因为 GC 日志没有按我们预估的思路进行打印&#xff0c;其中打印了 CMS 垃圾回收器的部分日志&#xff0c;本篇我们就来分析一下 CMS 垃圾收集日志。 JVM 系列文章传送门 初识 JVM&#xff08;Java 虚拟机…

微信小程序中的WXSS与CSS的关系及使用技巧

微信小程序中的WXSS与CSS的关系及使用技巧 引言 在微信小程序的开发中,样式的设计与实现是构建用户友好界面的关键。微信小程序使用WXSS(WeiXin Style Sheets)作为其样式表语言,WXSS在语法上与CSS非常相似,但也有一些独特的特性。本文将深入探讨WXSS与CSS的关系,介绍WX…

自研芯片逾十年,亚马逊云科技Graviton系列芯片全面成熟

在云厂商自研芯片的浪潮中&#xff0c;亚马逊云科技无疑是最早践行这一趋势的先驱。自其迈出自研芯片的第一步起&#xff0c;便如同一颗石子投入平静的湖面&#xff0c;激起了层层涟漪&#xff0c;引领着云服务和云上算力向着更高性能、更低成本的方向演进。 早在2012年&#x…

掌上单片机实验室 — RT - Thread+ROS2 浅尝(26)

前面化解了Micro_ROS通讯问题&#xff0c;并在 RT-Thread Studio 环境下&#xff0c;使用Micro_ROS软件包中的例程&#xff0c;实现了STM32F411CE核心板和ROS2主机的通讯。之后还尝试修改例程 micro_ros_sub_twist.c &#xff0c;实现了接收 turtle_teleop_key 所发出的 turtle…

【Leetcode 每日一题】25. K 个一组翻转链表

25. K 个一组翻转链表 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单…

Android 图形系统之一:概览

Android 图形系统是一套完整的架构&#xff0c;用于管理从应用绘制到显示屏幕的整个流程。它涉及多个层次和组件&#xff0c;从应用程序到硬件&#xff0c;确保每一帧都能准确、高效地呈现到用户的设备屏幕上。 1. Android 图形系统的架构 Android 图形系统的架构可以分为以下…

【C语言】指针与数组的例题详解:深入分析与高级用法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目一详细分析与解答代码逐步解析 &#x1f4af;进一步优化和拓展1. 指针与数组的关系2. 指针运算的注意事项3. 常见的错误和陷阱4. 拓展&#xff1a;指针操作的应用场…

Windows修复SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

打开服务器&#xff0c;运行gpedit.msc&#xff0c;打开“本地组策略编辑器”&#xff0c;依次打开计算机配置-管理模板-网络-SSL配置设置。 打开“SSL密码套件顺序”&#xff0c;更改为已启用&#xff0c;并修改套件算法&#xff0c;去掉TLS1.1版本算法。 TLS_ECDHE_ECDSA_WIT…

go-zero(八) 中间件的使用

go-zero 中间件 一、中间件介绍 中间件&#xff08;Middleware&#xff09;是一个在请求和响应处理之间插入的程序或者函数&#xff0c;它可以用来处理、修改或者监控 HTTP 请求和响应的各个方面。 1.中间件的核心概念 请求拦截&#xff1a;中间件能够在请求到达目标处理器之…

一、Java 动态字节码增强技术概述

Java 动态字节码增强技术详解 Java 动态字节码增强是一种强大的技术&#xff0c;通过操作 Java 字节码&#xff0c;可以在运行时对类的行为进行动态修改或增强。这项技术广泛应用于框架开发&#xff08;如 Spring 和 Hibernate&#xff09;以及性能监控工具&#xff08;如 APM…

vscode ctrl+/注释不了css

方式一.全部禁用插件排查问题. 方式二.打开首选项的json文件,注释掉setting.json,排查是哪一行配置有问题. 我的最终问题:需要将 "*.vue": "vue",改成"*.vue": "html", "files.associations": { // "*.vue": &qu…

使用 Jina Embeddings v2 在 Elasticsearch 中进行后期分块

作者&#xff1a;来自 Elastic Gustavo Llermaly 在 Elasticsearch 中使用 Jina Embeddings v2 模型并探索长上下文嵌入模型的优缺点。 在本文中&#xff0c;我们将配置和使用 jina-embeddings-v2&#xff0c;这是第一个开源 8K 上下文长度嵌入模型&#xff0c;首先使用 semant…

电视网络机顶盒恢复出厂超级密码大全汇总

部分电视机顶盒在按遥控器设置键打开设置时&#xff0c;会弹出设置密码弹窗&#xff0c;需输入密码才能操作其中内容。 如下图所示&#xff1a; 部分电视机顶盒在选择恢复出厂设置时&#xff0c;会出现设置密码弹窗&#xff0c;只有输入操作密码后才能进行恢复出厂设置的操作。…

cmake原理

CMake原理与快速入门 CMake是一个跨平台的构建&#xff08;build&#xff09;工具&#xff0c;完成代码编译、链接、打包过程。在开发AI应用平台时&#xff0c;由于开发的平台是在边缘设备运行的&#xff0c;而边缘设备的算力不高&#xff0c;所以对平台的效率要求比较高&…

SFTP全解析:深入了解组件功能与适用场景

文章目录 一、组件功能二、适用场景三、SFTP优势四、SFTP原理五&#xff0e;SFTP与同类产品对比六、部署方案1.裸金属部署2.k8s容器化部署 七、高可用方案八、监控方案九、常见问题及解决方法 一、组件功能 安全文件传输协议SFTP(SSH File Transfer Protocol)是文件传输协议(F…

Android 中文文件名排序实现案例教程

Android 中文文件名排序实现案例教程 一、问题分析二、解决方法2.1 使用系统提供的 Collator 类2.2 使用第三方库 Pinyin4J2.3 自定义排序规则 三、总结 在 Android 应用中&#xff0c;经常需要对包含中文的文件名进行排序。由于中文的特殊性&#xff0c;直接使用字符串比较的方…

java——Spring MVC的工作流程

Spring MVC的工作流程是基于模型-视图-控制器&#xff08;MVC&#xff09;设计模式的一个典型实现&#xff0c;以下是其主要工作流程步骤&#xff1a; 客户端请求提交&#xff1a; 用户通过浏览器向服务器发送请求&#xff0c;该请求首先到达Spring MVC的前端控制器DispatcherS…

Mutex::Autolock 和 std::lock_guard 的区别

Mutex::Autolock 和 std::lock_guard 都是 C 中用于管理互斥锁&#xff08;mutex&#xff09;的一种方式&#xff0c;它们的目标是自动获取和释放锁&#xff0c;避免手动管理锁的复杂性&#xff0c;从而防止死锁和遗漏解锁等问题。尽管它们有相似的功能&#xff0c;但二者也存在…