C/C++でJSON Restful Webサービスを実行しようとしています。私はAxis2/CとStaffを試してみましたが、これらはXMLのシリアライズ/デシリアライズには適していますが、JSONには適していません。
Herb Sutterのブログ で紹介されている Casablanca をご覧ください。
ffead-cpp を見ることができます。 jsonとrestfull Webサービスのサポートを提供する以外に、より多くの機能が含まれています。ただし、このフレームワークは状況によっては重すぎる場合があります。
ngrest を試してください。シンプルですが fast C++ RESTful JSON Webサービスフレームワークです。これは、Apache2、Nginx、または独自のシンプルなhttpサーバーの上にデプロイできます。
JSONを使用したAxis2/Cについて。公式のAxis2/Cはもうメンテナンスされていないようです。そのため、Axis2/Cは廃止されます(ただし機能します)。
Axis2/CのJSONサポートは axis2c-unofficial プロジェクトで利用できます。
Linux 、 バイナリパッケージを使用するWindows 、 ソースコードからのWindows の下に、JSONをサポートするAxis2/Cをインストールする方法に関するインストールマニュアルがあります。
WSFスタッフでJSONモードのCustomers(REST)サンプルを使用して試すことができます(staff/samples/rest/webclient
スタッフのソースコードのディレクトリ)。
cを使用したRESTサービスの作成をサポートするライブラリはいくつかあります。 restinio :
#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;
}
お試しください https://github.com/babelouest/ulfius C/C++ Restful APIを構築するための優れたライブラリ。すべてのプラットフォームをサポートできます:Linux、FreeBSD、Windowsなど
C++ Webサービスの場合、次のスタックを使用しています。
JSONとJSONPathは、C-とC++の両方で gsoap でサポートされています。新しい コードジェネレーターと新しいJSON API を使用すると、すぐに始めることができます。
いくつかのJSON、 JSON-RPCおよびREST例 が含まれています。メモリ管理は自動です。
コードジェネレーターが役立ちます。たとえば json.org menu.json
スニペット:
{ "menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
}
Gsoapコマンドjsoncpp -M menu.json
はこのコードを生成してJSON値を入力します。
value x(ctx);
x["menu"]["id"] = "file";
x["menu"]["value"] = "File";
x["menu"]["popup"]["menuitem"][0]["value"] = "New";
x["menu"]["popup"]["menuitem"][0]["onclick"] = "CreateNewDoc()";
x["menu"]["popup"]["menuitem"][1]["value"] = "Open";
x["menu"]["popup"]["menuitem"][1]["onclick"] = "OpenDoc()";
x["menu"]["popup"]["menuitem"][2]["value"] = "Close";
x["menu"]["popup"]["menuitem"][2]["onclick"] = "CloseDoc()";
また、解析されたJSON値とJSONPathコードの読み取りも、このツールで生成できます。
[〜#〜]編集[〜#〜]
明確にするために、jsoncppコマンドラインコードジェネレーターは、.jsonファイルをテンプレートとして使用してJSONデータを読み書きするAPIコードを示しています。 JSONデータを入力および抽出するAPIコードを記述する時間を節約するのに役立ちます。 JSONPathクエリコードもこのツールで生成できます。
JIRAプロジェクト があり、AXIS2/CのJSONのサポートが解決されました。
私は自分のプロジェクトに実装し、ライター(Badgerfish規約)で管理しましたが、それでもリーダーで管理しようとしています。
メモリ内のスタックでの管理はより複雑に思われます。
webcc をご覧ください。
これは軽量のC++ですRESTおよびSOAP Boost.Asio(1.66+)に基づくクライアントおよびサーバーライブラリです。
それは非常に有望であり、積極的に開発されています。
サーバーとクライアントの作成方法を示す優れた例があります。
利点:
欠点: