27 | C++ REST SDK:使用现代C++开发网络应用
该思维导图由 AI 生成,仅供参考
初识 C++ REST SDK
- 深入了解
- 翻译
- 解释
- 总结
C++ REST SDK是一个现代C++库,用于支持HTTP协议和RESTful接口开发。它提供了丰富的功能,包括HTTP客户端、HTTP服务器、任务、JSON、URI、异步流、WebSocket客户端和OAuth客户端。本文介绍了C++ REST SDK的安装和编译方法,以及其对JSON的支持。在示例代码中展示了如何使用C++ REST SDK进行HTTP请求的发起和处理,以及异步处理的方式。此外,文章还展示了如何使用C++ REST SDK实现对文件的异步读写,进一步展示了其强大的异步处理能力。C++ REST SDK使用异步编程模式,底层使用线程池来实现,但需要注意线程数量的控制。文章还介绍了如何使用C++ REST SDK快速搭建一个HTTP服务器,并对线程的细节进行了讨论。总的来说,C++ REST SDK是一个功能丰富、易用的现代C++库,适用于开发各种网络应用。文章内容涵盖了C++ REST SDK的主要功能和异步编程方式,为读者提供了全面的概览。
《现代 C++ 编程实战》,新⼈⾸单¥59
全部留言(17)
- 最新
- 精选
- 幻境之桥吴老师要是可以把所有的内容都使用 cmake 来构建,以后参考起来可以更方便啊
作者回复: 这要花时间的……用 CMake 的来顶这个评论,人多我就考虑一下。 更新:我听到大家的声音了。CMake 用户的福利在这里: https://github.com/adah1972/geek_time_cpp 有空时我会继续更新。
2020-02-03291 - 大土豆老师,您认为现在这种前后端分离的架构,服务端不输出页面,纯粹只输出json的情况下,为什么C++在Http Rest API的服务端还没有广泛的应用?目前大多数还是Java(spring)或者PHP,C++基本没份额
作者回复: 使用C++的话: 得——性能; 失——开发效率。 关键在于损失的开发效率跟获得的性能比,值不值。如果你的应用瓶颈在数据库,显然不值。如果瓶颈在CPU和内存,可能就值了——如果你的应用很热门,需要很多台服务器部署的话。单台服务器的应用很可能就不值了,因为服务器便宜,开发人员的工资贵。 游戏后台之类的服务器常常是用C++写的。没记错的话,Google的搜索引擎也是C++。
2020-04-076 - 阿鼎项目用vs2010,而目前可选的restful库大多是c++11的。请问老师,通过何种手段,可以使用c11库?
作者回复: 第一步,升级。你在用十年前的老工具诶。
2020-05-164 - 心情难以平静coroutine现在有好多轮子。希望标准实现快点到来。据说里面的坑较多,希望有人能先帮忙踩一踩。
作者回复: (C++20)协程是第 30 讲的内容。在 MSVC 和 Clang 已经基本可用了。坑,总得用了之后才知道有多少的……
2020-02-032 - Geek_c18718吴老师,运行结果为A URL is needed,我应该去哪输入URL;完整的输入输出调用函数应该是什么样的呢?
作者回复: 命令行上输入。假设你用的是Windows,用的是我给出的命令行,一个示例执行可能就是: test.exe "http://wyw.dcweb.cn/" 最后一问的意思我没看明白。请另起一个新问题,详细描述一下。
2021-06-181 - Geek_611a57在准备搭建一个HTTP网关,有两个问题请教: 1. 异步流例子里哪里体现异步?看着好像是要等所有task都完成才返回?异步的需求是发送之后不等,有结果返回时候回调。 2. 跟libcurl相比,哪个更适合应用于HTTP网关?
作者回复: 所谓异步,是指你不是等待系统返回上一次的结果后进行下一步的操作(常见的同步做法),而是告诉系统,在上一次的操作执行结束后,然后给我去执行某段代码(then)。但异步的代码也会有个同步点,叫wait、get之类。程序整体还是用continuation的方式实现的,用then串起来。 C++ REST SDK还是有个缺点,它虽然使用了异步的编程模式,但它的实现使用了多个线程,而非类似协程那种的真正异步,因此并发数有上限(默认是40)。如果你的并发数不高,或者手工调整这个数值,做网关是没有问题的,我实际就拿它做过请求缓存网关。比起用libcurl这种,代码应该是简洁了不少,但调试起来复杂些,坑也不一样。不同的人会有不同的取舍吧。
2021-01-081 - 可爱的小奶狗g++ -std=c++17 -pthread test.cpp -lcpprest -lcrypto -lssl -lboost_thread -lboost_chrono -lboost_system 老师,这段手工在linux上编译test.cpp的命令,你咋知道要链接这些库呢?纯靠经验还是根据github上cpprestsdk这个项目release下的cmakelists.txt推断出出来的。
作者回复: 都有。最早就是在各平台上自己查文档、试验出来的。后来用了cmake,就会去参考它的规则。这种项目,确实用cmake轻松多了,因为在各个平台上需要链接的库是不一样的。
2020-05-241 - 莫珣cpprest这个库在linux下编译起来真是太麻烦了,今天折腾了大半天竟然没有编译出来。github上给出的编译步骤过于简单。
作者回复: 遇到特定困难可以网上搜一下。我印象里,依赖装好之后,Linux上编译还是不麻烦的。你不是因为 GCC 版本太低吧? 实际上,这虽然是微软出的,我觉得还是在 Windows 上编译更麻烦呢……
2020-02-0421 - hey支持https吗
作者回复: 支持。客户端直接用。服务器端麻烦点,根据平台不同有不同的配置方法。
2020-02-031 - 江湖中人老师,我想把老项目里自定义消息体TCP传输的方式都改成RPC接口方式,不知道可行不,您有什么建议吗?
作者回复: RPC 是个很通用的名词,不是一种具体协议,所以,这个问题不那么好回答……从理论上讲,当然时可以的。取决于你使用什么 RPC 方式,性能有可能会受到影响;具体是不是一个问题,就需要你自己评估了。 往好里讲,一个通用的 RPC 方式会让代码更加简单和可维护,比起手写传输代码还是有很大优势的。
2022-06-09