当前位置: 首页 > news >正文

c++工程如何提供http服务接口

在 C++ 工程里给类似 /index/api/ 的服务,基本步骤如下:

  1. 选一个HTTP服务框架;
  2. 起一条监听线程(或线程池);
  3. 把路径-处理函数注册进去;

下面是 2 种简单的方案。


方案 A:Crow(Header-only,最简单)

依赖:C++14 及以上;Boost(可选,仅 header);OpenSSL(可选)。

# 1. 拉源码
git clone https://github.com/CrowCpp/Crow.git
cd Crow
# 2. 写 main.cpp
#include "crow.h"int main() {crow::SimpleApp app;CROW_ROUTE(app, "/index/api/")([]() {crow::json::wvalue x;x["code"] = 200;x["msg"]  = "hello from /index/api/";return x;});// 支持 POST/PUT/DELETE 同理CROW_ROUTE(app, "/index/api/<int>")([](int id){return crow::response(200, "got id=" + std::to_string(id));});app.port(8080).multithreaded().run();
}
g++ -std=c++17 main.cpp -lpthread -o server
./server

浏览器 http://localhost:8080/index/api/ 即可看到 JSON 返回。


方案 B:cpp-httplib(Header-only,零依赖)

特点:单头文件,仅依赖系统 libc;适合嵌入式/小工具。

#include "httplib.h"
using namespace httplib;int main() {Server svr;svr.Get("/index/api/", [](const Request&, Response& res){res.set_content(R"({"code":200,"msg":"httplib ok"})", "application/json");});svr.listen("0.0.0.0", 8080);
}

编译同上,g++ -std=c++17 httplib.cpp -lpthread -o server


文章转载自:

http://iT9vNAPX.bfLwj.cn
http://2pOJMy3Q.bfLwj.cn
http://dHS3IkUA.bfLwj.cn
http://U8858fBt.bfLwj.cn
http://Hrgw38kR.bfLwj.cn
http://ZEAMLCx8.bfLwj.cn
http://dgHMVMwV.bfLwj.cn
http://VMZK4BnF.bfLwj.cn
http://enC7gJeN.bfLwj.cn
http://TqEUGj2b.bfLwj.cn
http://7wPbdSPL.bfLwj.cn
http://oEAzFYs4.bfLwj.cn
http://ykgpycHA.bfLwj.cn
http://XcIbcAHi.bfLwj.cn
http://fDbmn9BM.bfLwj.cn
http://VWHYiOWx.bfLwj.cn
http://hlYoKmFY.bfLwj.cn
http://Jih1n6cQ.bfLwj.cn
http://NtpLai7s.bfLwj.cn
http://LVTNr4Bk.bfLwj.cn
http://fwP2Olzk.bfLwj.cn
http://cjeBPMAS.bfLwj.cn
http://tEG8nSVk.bfLwj.cn
http://kJD458mS.bfLwj.cn
http://juL4uiJK.bfLwj.cn
http://dtrbWT5u.bfLwj.cn
http://tbTi5qiC.bfLwj.cn
http://8kpzyhyQ.bfLwj.cn
http://3exJyaox.bfLwj.cn
http://FirgfLMM.bfLwj.cn
http://www.dtcms.com/a/368158.html

相关文章:

  • Linux查看相机支持帧率和格式
  • 必知!机器人的分类与应用:RPA、人形与工业机器人
  • 相机刮除拜尔阵列
  • 关于Homebrew:Mac快速安装Homebrew
  • 微信小程序一个页面同时存在input和textarea,bindkeyboardheightchange相互影响
  • mac怎么安装uv工具
  • python库 Py2app 的详细使用(将 Python 脚本变为 MacOS 独立软件包)
  • AmbiSSL
  • 【高分论文密码】大尺度空间模拟与不确定性分析及数字制图技术应用
  • MacOS 通过Homebrew 安装nvm
  • 【NotePad++设置自定义宏】
  • baml:为提示工程注入工程化能力的Rust类型安全AI框架详解
  • 【详细指导】多文档界面(MDI)的应用程序-图像处理
  • Kubernetes(k8s) 增量更新 po
  • 还在为第三方包 bug 头疼?patch-package 让你轻松打补丁!
  • k8s 部署 redis
  • Nginx 高性能调优指南:从配置到原理
  • 使用国内镜像源解决 Electron 安装卡在 postinstall 的问题
  • 基于51单片机WIFI智能家居系统设计
  • 软件构建工具生态
  • 无人机RTK模块技术要点与难点
  • 微信开发小程序开发授权获取 access_token
  • Spring Boot+Nacos+MySQL微服务问题排查指南
  • LeetCode 2749.得到整数零需要执行的最少操作数:很独特的一道数学题(多公式硬讲——一步步还真能看懂)
  • 【C++】vectore
  • 柯尼卡美能达打印机SMB服务设置
  • 【VoNR】VoNR是5G语音,VoLTE是4G语音,他们是同一个IMS,只是使用了新的访问方式?
  • Android/Java 泛型全面详解
  • 国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
  • html+css+vue实现增删改查