Tomcatを実行しているサーバーからリモートのJAX-RS JSON APIがあるとします。私はC/C++クライアントからこのAPIにアクセスしたいと思います。 C/C++クライアントの生活を楽にするツールがありますか?コードジェネレータ?それとも誰かが代替案を提案していますか?JAX-RS JSON APIのC/C++クライアントを生成できますか?
答えて
私はこのようなツールについて聞いたことがありません。さらに、私はそのようなツール(JSONのC/C++ジェネレータ)は実用的ではないと考えています。
理由はいくつかあります。最も重要なものは次のとおりです。
重要な問題は、JSONにスキーマがないことです。これは、APIジェネレータがサンプルメッセージを見て、期待するフィールドとそのタイプが何であるかを推測しようとする必要があることを意味します。これは難しく、場合によっては理論的に不可能でさえあります。
JavaやC#などの言語では、オブジェクトAPIを生成するための簡単な「正しい方法」があります。例えばJavaBeansの規約。 C++や特にCでは、規約は存在せず、コンテナプロトコルやメモリ管理のような複雑な問題があります。
JavaやC#などの言語では、実行時型セーフで、さまざまな言語レベルのメカニズムが用意されているため、動的プログラミングを使用してJSONのスキーマレスの性質に対応できます。たとえば、Javaではリフレクション、プロキシクラス、動的コード生成、動的コードロードなどがあり、これらのすべてがJSONの処理に役立ちます。 CおよびC++では、これらのメカニズムは一般的に利用できません。
つまり、CまたはC++を使用している場合、JSONライブラリは得られるほど良好です。
フォロー
コメントが指摘するように、これは特定 JAX-RSベースのサーバー実装のコンテキストで実装することは可能かもしれません。内部メタデータを取得し、JSONマッピングを適用し、そこからC/C++ APIを生成する必要があります。問題は次のとおりです。
- ジェネレータの実装はプラットフォーム固有です。
- C/C++ベースのクライアントは、APIの再生成および対応するクライアントコードの変更なしでは、有効なスキーマの変更に対処できません。(対照的に、JSONライブラリベースのソリューションは、理論上、予期しない新しい属性などを処理するためにコード化することができます)
- まだ対処するにはコンテナ/メモリ管理の問題があります。
必要なものは、httpリクエストを送受信するためのライブラリの選択と、jsonパーサーです。このようなAPIのアイデアはJSONが吐き出されるという理由から、コードを生成して簡単にすることはできません。 JSONのポイントは、一貫した方法で言語と交通の障壁を横断することです。 XMLのようなビットですが、単純です。
この質問はあなたに興味があります:what's the best json parser? JSON Spirit特に良い記事のようです。
ここで、RESTを使用しているので、必要なのは右のURLと通信するだけです。完了しました。
最後に、あなたが決定したいことは、ネットワーク通信にlibaryを使用することです。ブーストは多くの人々の推薦になるだろう、私は確信しています。
私はJSONが何であるのか、そこにライブラリがあるのか知っていますが、C/C++のstructs/classesに解析する定型コードをすべて記述したくありません。新しいクラスやフィールドがあるときには、すべてをもう一度変更したくありません。そのため、私は自動化されたソリューションを探しています。 – FelixM
- 1. wadlからjerseyクライアントのvoidメソッドを生成できません
- 2. voidを返すコントローラメソッドがJSONを生成できますか?
- 3. Freebase JSON APIはまだ生きていますか?
- 4. CXF JAXRS - http-conf:クライアントReceiveTimeoutは機能しませんか?
- 5. flipkart APIのアクセストークンを生成できません
- 6. JSON - Pythonのループでjsonを生成
- 7. サーバー上のJSONオブジェクトの生成に加え、クライアント側
- 8. cPanel API jsonコールを使用してMySQL DBを作成できますか?
- 9. クライアントはJSONファイルを編集できますか?
- 10. どのECMAScriptバージョンをAdobe Animate CCで使用できますか?
- 11. 複数のCCにCCを送信しますか?
- 12. クライアントが再生できないパスワードテキストボックスのデフォルトパスワードを作成する
- 13. google-api-java-client AndroidのJSONパーサーは空のself.request.bodyを生成します。
- 14. ループ内でJSONを生成
- 15. PHPでJSONファイルを生成
- 16. transactionReceiptでJSONオブジェクトを生成
- 17. Rubyでディレクトリのjson配列を生成しますか?
- 18. アンドロイドでJSONからリストビューを生成
- 19. クライアントはWeb APIリクエストをキャンセルできますか?
- 20. CXF JAXRSクライアントがTCP接続を再利用しない
- 21. "if"を "call/cc"を使って実装できますか?
- 22. OSGI環境でSwagger + javadoc生成ツール(swagger-jaxrs-doclet、swagger-core)が動作しない
- 23. 春のデータでJAXRSの@Providerを見つけることができません。
- 24. jsonフィールドからjQuery GridのURLクライアントサイドを生成しますか?
- 25. Web APIはXMLをJsonに変換できますか?
- 26. axis2 webserviceクライアントjarを生成
- 27. JavaScriptクライアント側ファイルの生成
- 28. HappstackでJSON Rest APIを作成するには? JSON本体?
- 29. WCF WEB APIクライアントPure Json:大量のデータのAPI呼び出しでMemoryStreamを使用すると、Performace issuseが発生しますか?
- 30. クライアント生成リンク(AJAX)からのポストバック
JSONだけを考えているとすれば正しいと思います。しかし、私はJAX-RSには、別の言語で値オブジェクトを生成するためのJavaベースのスキーマがあると考えています。誰かがまだそれをやっていれば、もっと問題になると思う。 JBoss RestEasyはJavaで何かを提供していると主張しています。 – FelixM