云备份——第三方库使用介绍(下)

news2024/11/19 2:48:09

httplib库,一个C++11单文件头的跨平台HTTP/HTTPS库。安装起来非常容易。只需包含httplib.h在你的代码中即可。

httplib库实际上是用于搭建一个简单的http服务器或者客户端的库,这种第三方网络库,可以让我们免去搭建服务器或客户端的时间,把更多的精力投入到具体的业务处理中,提高开发效率。

下面我们会逐步介绍一下httplib库的主要类

 一,MultipartForData结构体

    struct MultipartFormData {
        std::string name;//名字,注意不是文件名是该MultipartFormData个体的名字
        std::string content;//上传文件的内容
        std::string filename;//上传文件的名字
        std::string content_type;//上传文件内容的类
    };
    using MultipartFormDataItems = std::vector<MultipartFormData>;//MultipartFormData数组。可以存储多个MultipartFormData结构,也就是可以一下上传多个MultipartFormData

 该类主要用于管理客户端上传的文件信息的结构体

 二,Request以及Response结构体类详解

2.1 Request

Request类主要是客户端用于构建该类保存HTTP相关信息,然后等待构建对应HTTP客户端报文发送给服务端进行处理

 

2.2 Response

主要用于服务端接收到Request后,进行业务处理,然后构建Response保存HTTP服务端响应信息,然后等待服务端构建对应HTTP报文进行返回

三, 服务器(Server类)/客户端(Clinet类)构建

3.1 Server类

主要用来设置服务端在面对客户端不同请求的不同处理方式,以及Server的启动

 

3.2 Client类

四,简易服务器和客户端搭建

服务器

#include "httplib.h"
#include <iostream>

int main()
{
    httplib::Server server;
    server.Get("/hello",[](const httplib::Request& req,httplib::Response& res){
        res.set_content("hello,I am server","text/plain");
        res.status=200;
    });
    server.Get(R"(/numbers/(\d+))",[&](const httplib::Request& req,httplib::Response& res){
        auto number=req.matches[1];
        res.set_content(number,"text/plain");
        res.status=200;
    });

    server.Post("/upload",[&](const httplib::Request& req,httplib::Response& res){
        if(!req.has_file("file1"))
        {
            res.set_content("no fund","text/plain");
            res.status=404;
        }

        const auto& file=req.get_file_value("file1");
        std::string content=file.filename;
        content+='\n';
        content+=file.content;
        res.set_content(content,"text/plain");
        res.status=200;


    });
    server.listen("0.0.0.0",8080);
    return 0;
}

客户端

#include "httplib.h"
#include <iostream>

int main()
{
    httplib::Client client("124.221.185.180",8080);
    httplib::MultipartFormData item;
    item.name="file1";
    item.content="hello,word";
    item.filename="test";
    item.content_type="text/plain";

    httplib::MultipartFormDataItems items;
    items.push_back(item);
    auto res=client.Post("/upload",items);
    std::cout<<res->body<<std::endl;
    std::cout<<res->status<<std::endl;
    return 0;
}

运行如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/956020.html

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

相关文章

lv3 嵌入式开发-linux介绍及环境配置

目录 1 UNIX、Linux和GNU简介 2 环境介绍 3 VMwareTools配置 4 vim配置&#xff1a; 1 UNIX、Linux和GNU简介 什么是UNIX? unix是一个强大的多用户、多任务操作系统&#xff0c;支持多种处理器架构 中文名 尤尼斯 外文名 UNIX 本质 操作系统 类型 分时操作系统 开…

什么是 ORAM

参考文献&#xff1a; [GO96] Goldreich O, Ostrovsky R. Software protection and simulation on oblivious RAMs[J]. Journal of the ACM (JACM), 1996, 43(3): 431-473.[Batcher68] Batcher K E. Sorting networks and their applications[C]//Proceedings of the April 30…

python基础爬虫反爬破解

文章目录 爬虫初识1. HTTP协议与WEB开发&#xff08;1&#xff09;简介&#xff08;2&#xff09;socket套接字&#xff08;3&#xff09;请求协议与响应协议 2. requests&反爬破解&#xff08;1&#xff09;UA反爬&#xff08;2&#xff09;referer反爬&#xff08;3&…

Ansible-playbook变量学习

目录 1.命令行变量赋值2.在playbook中赋值变量3.在ansible的清单文件&#xff08;/etc/ansible/hosts&#xff09;中定义普通变量4.在ansible的清单文件&#xff08;/etc/ansible/hosts&#xff09;中定义分组变量5.定义变量到一个文件中6.在执行playbook的目录创建 group_vars…

30个惊艳的数据可视化作品,让你感受“数据之美”!

‍ 在一个信息大爆炸的时代&#xff0c;每天都有很多的新消息、新发现、新趋势向我们狂轰乱炸而来。在这个过程中&#xff0c;我们既是数据的生产者&#xff0c;也是数据的使用者&#xff0c;然而初次获取和存储的原始数据总是杂乱无章的。 要想数据达到生动有趣、让人一目了…

【C++练习】leetcode刷题训练(中等难度)

【C练习】leetcode刷题训练(中等难度&#xff09; 1.数组中的第K个最大元素2.前K个高频单词3.单词识别4.字符串相乘5.只出现1次的数字Ⅱ6.栈的弹出压入序列 1.数组中的第K个最大元素 解题思路 1.典型的TOP-K问题(用堆来解决) 2.要求实现时间复杂度为O(N),而我们的优先级队列的时…

【附安装包】Alias AutoStudio2023安装教程

软件下载 软件&#xff1a;AutoStudio版本&#xff1a;2023语言&#xff1a;英文大小&#xff1a;4.81G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu.c…

《Flink学习笔记》——第十一章 Flink Table API和 Flink SQL

Table API和SQL是最上层的API&#xff0c;在Flink中这两种API被集成在一起&#xff0c;SQL执行的对象也是Flink中的表&#xff08;Table&#xff09;&#xff0c;所以我们一般会认为它们是一体的。Flink是批流统一的处理框架&#xff0c;无论是批处理&#xff08;DataSet API&a…

2023年人工景点行业研究报告

第一章 行业概况 1.1 定义及分类 人工景点行业通常指的是设计和构建的为提供娱乐、教育或文化体验的景点。这些景点可能包括主题公园&#xff0c;博物馆&#xff0c;动物园&#xff0c;水族馆&#xff0c;科学中心&#xff0c;历史遗迹&#xff0c;艺术展览等。这个行业通常包…

rpm打包

文章目录 rpm打包 1. rpm打包步骤0&#xff09;安装打包工具rpm-build和rpmdevtools1&#xff09;创建初始化目录2&#xff09;准备打包内容3&#xff09;编写打包脚本 spec文件4&#xff09;打包5&#xff09;安装 rpm打包 1. rpm打包步骤 0&#xff09;安装打包工具rpm-buil…

python把txt变成list,并且写入xslx文件

需求&#xff1a; 1、把txt文件的内容变成list 2、然后写入excel中 txt文件内容 IP.txt 192.168.199.201,4C8G,200G 192.168.199.202,4C8G,200G 192.168.199.203,4C8G,200G 192.168.199.204,4C8G,200G 192.168.199.205,4C8G,200G192.168.199.206,4C8G,200G 192.168.199.207…

2023年7月京东笔记本电脑行业品牌销售排行榜(京东数据平台)

随着智能手机、平板电脑等移动互联设备的普及&#xff0c;人们对于个人电脑的依赖减轻&#xff0c;加之电脑的更换率较低&#xff0c;因此当前PC端消费市场整体出现疲态&#xff0c;笔记本电脑的出货量不断下降&#xff0c;今年7月份也同样呈现这一趋势。 根据鲸参谋电商数据分…

不使用 ERP有3个隐藏业务风险,一定要知道!

不少中小型企业出于种种原因&#xff0c;推迟了对ERP系统的投资。也许是因为没有一大笔钱购买软件&#xff1b;也许是听说实施项目可能需要几个月甚至几年的时间&#xff0c;而企业没有时间去做这种令人头疼的事情。 因此&#xff0c;中小企业并没有转向ERP系统&#xff0c;而…

运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 一&#xff1a; if...elif...elif..else fi多层…

软件测试—测试用例的设计

软件测试—测试用例的设计 测试用例是什么&#xff1f; 首先&#xff0c;测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试系统提供的一组集合。这组集合包括&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素。 好的测试用例的特征 一个好的测试…

ChatGPT 总结数据分析的所有知识点

ChatGPT功能非常多,特别是对某个行业,某个方向,某个技术进行总结那是相当专业的。 如下图。 直接用一个指令便总结出来数据分析当中的所有知识点内容。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Ex…

【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

文章目录 一、爬虫对象-豆瓣读书TOP250二、python爬虫代码讲解三、讲解视频四、完整源码 一、爬虫对象-豆瓣读书TOP250 您好&#xff0c;我是 马哥python说 &#xff0c;一名10年程序猿。 今天我们分享一期python爬虫案例讲解。爬取对象是&#xff0c;豆瓣读书TOP250排行榜数…

2023-08-31 LeetCode每日一题(一个图中连通三元组的最小度数)

2023-08-31每日一题 一、题目编号 1761. 一个图中连通三元组的最小度数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图&#xff0c;整数 n 表示图中节点的数目&#xff0c;edges 数组表示图中的边&#xff0c;其中 edges[i] [ui, vi] &#xff0c;表示 ui…

暴力递归转动态规划(三)

前两篇暴力递归转动态规划的文章中&#xff0c;都是通过从上到下的一种思路来解决的问题&#xff0c;这篇文章会通过数组从左向右遍历的方式&#xff0c;来将暴力递归转成动态规划。 题目 有两个等长的数组 w[] 和 v[]&#xff0c;w[i] 和 v[i] 分别表示 i 号物品的重量和价值…

全球十大安全好用的黄金交易app软件最新排名(综合评测)

随着金融市场的不断发展&#xff0c;黄金交易app软件日益成为投资者不可或缺的工具。然而&#xff0c;面对众多的黄金交易软件&#xff0c;投资者往往感到困惑和难以抉择。本文将根据最新排名&#xff0c;对全球十大安全好用的黄金交易软件进行综合评测&#xff0c;帮助投资者找…