在C / C ++中实现JSON RESTful服务的方法

问题描述 投票:21回答:9

我试图用C / C ++做一个JSON Restful Web服务。我已经尝试过Axis2 / C和Staff,它非常适合XML序列化/反序列化,但不适用于JSON。

c++ c json web-services
9个回答
11
投票

您可能想看看Casablanca中介绍的Herb Sutter's blog


3
投票

你可以看看qazxsw poi。除了为json和restful Web服务提供支持外,它还包含更多功能。这个框架可能对你的情况来说太重了。


3
投票

试试ffead-cpp。这是一个简单但ngrest C ++ RESTful JSON Web服务框架。它可以部署在Apache2,Nginx或自己的简单http服务器之上。


关于带有JSON的Axis2 / C.似乎官方Axis2 / C不再维护。所以Axis2 / C变得过时(但仍然有效)。

Qazxswpoi项目中提供了对Axis2 / C的JSON支持。

有关如何在fastaxis2c-unofficialLinux下安装带有JSON支持的Axis2 / C的安装手册。

您可以使用JSON模式中的客户(REST)示例(可从Windows using binary package目录中获取员工源代码)与WSF员工一起尝试。


3
投票

有少数库支持用c创建休息服务,例如Windows from source code

staff/samples/rest/webclient

2
投票

对于C ++ Web服务,我使用以下堆栈:

  • restinio C ++微网页框架
  • #include <restinio/all.hpp> int main() { restinio::run( restinio::on_this_thread() .port(8080) .address("localhost") .request_handler([](auto req) { return req->create_response().set_body("Hello, World!").done(); })); return 0; } 用于json序列化/反序列化。

2
投票

尝试ipkn/crow伟大的库来构建C / C ++ Restful API。可以支持所有平台:Linux,FreeBSD,Windows等


1
投票

有一个nlohmann/json解决了AXIS2 / C中JSON的支持。 我在我的项目中实现并且我与作者(Badgerfish惯例)一起管理但我仍然试图与读者一起管理。 使用内存中的堆栈管理似乎更复杂。


1
投票

使用新的https://github.com/babelouest/ulfiusJIRA project中的C和C ++都支持JSON和JSONPath,以帮助您快速入门。

包括几个JSON,gsoap。内存管理是自动的。

代码生成器很有用。以code generator and a new JSON API片段为例:

JSON-RPC and REST examples

gsoap命令json.org menu.json生成此代码以填充JSON值:

{ "menu": {
    "id": "file",
    "value": "File",
    "popup": {
      "menuitem": [
        {"value": "New", "onclick": "CreateNewDoc()"},
        {"value": "Open", "onclick": "OpenDoc()"},
        {"value": "Close", "onclick": "CloseDoc()"}
      ]
    }
  }
}

此工具还可以生成读取解析的JSON值和JSONPath代码。

编辑

为了澄清,jsoncpp命令行代码生成器显示了使用.json文件作为模板读取和写入JSON数据的API代码,我发现这有助于节省编写API代码以填充和提取JSON数据的时间。也可以使用此工具生成JSONPath查询代码。


1
投票

你可能想看看jsoncpp -M menu.json

它是一个基于Boost.Asio(1.66+)的轻量级C ++ REST和SOAP客户端和服务器库。

它非常有前景并且正在积极开发中。

有很多例子可以演示如何创建服务器和客户端。

好处:

  • 代码非常干净(严格遵循Google C ++ Style)。
  • 根据VLD测试没有内存泄漏。
  • 易于使用的API。
  • 等等

缺点:

  • 尚无SSL支持。
  • 无法部署到Nginx等现有Web服务器,因为它管理自己的HTTP服务器。
© www.soinside.com 2019 - 2024. All rights reserved.