我试图用C / C ++做一个JSON Restful Web服务。我已经尝试过Axis2 / C和Staff,它非常适合XML序列化/反序列化,但不适用于JSON。
您可能想看看Casablanca中介绍的Herb Sutter's blog。
你可以看看qazxsw poi。除了为json和restful Web服务提供支持外,它还包含更多功能。这个框架可能对你的情况来说太重了。
试试ffead-cpp。这是一个简单但ngrest C ++ RESTful JSON Web服务框架。它可以部署在Apache2,Nginx或自己的简单http服务器之上。
关于带有JSON的Axis2 / C.似乎官方Axis2 / C不再维护。所以Axis2 / C变得过时(但仍然有效)。
Qazxswpoi项目中提供了对Axis2 / C的JSON支持。
有关如何在fast,axis2c-unofficial,Linux下安装带有JSON支持的Axis2 / C的安装手册。
您可以使用JSON模式中的客户(REST)示例(可从Windows using binary package目录中获取员工源代码)与WSF员工一起尝试。
有少数库支持用c创建休息服务,例如Windows from source code:
staff/samples/rest/webclient
对于C ++ Web服务,我使用以下堆栈:
#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序列化/反序列化。尝试ipkn/crow伟大的库来构建C / C ++ Restful API。可以支持所有平台:Linux,FreeBSD,Windows等
有一个nlohmann/json解决了AXIS2 / C中JSON的支持。 我在我的项目中实现并且我与作者(Badgerfish惯例)一起管理但我仍然试图与读者一起管理。 使用内存中的堆栈管理似乎更复杂。
使用新的https://github.com/babelouest/ulfius,JIRA 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查询代码。
你可能想看看jsoncpp -M menu.json
。
它是一个基于Boost.Asio(1.66+)的轻量级C ++ REST和SOAP客户端和服务器库。
它非常有前景并且正在积极开发中。
有很多例子可以演示如何创建服务器和客户端。
好处:
缺点: