1

REST 経由で Web に公開される C++ API があります。アプリケーションを FastCGI プロセスとして作成しました。本文にデータを含むアプリに POST して、テキストを返すことができます。しかし今は、テキストではなく、JSON オブジェクトとしてデータを返したいと考えています。

出力は既に JSON ファイルにパッケージ化されています。これをリクエスタに戻す方法を知る必要があるだけです。

編集:

私は現在、次のようなものを持っています: http://pastebin.com/vhC30kTJ

ここでは、printcontent(string) 関数でテキストを出力しています。cout を使用して印刷しているテキストは、FastCGI によって HTTP リクエスターに返されます。代わりに JSON を渡したいのですが、その方法がわかりません。データを JSON ファイルに書き込むことができます。JSON ファイルを返しますか、それとも json スタイルの文字列を返しますか? 私は混乱しています。

4

1 に答える 1

2

理想的には、JSONを形成する関数はのパラメーターを受け入れる必要がありますstd::ostream &。次に、渡したファイルに書き込みstd::ofstreamたい場合、および標準出力に書き込みたい場合(この場合は、ブラウザーに送信されるように、これを実行します)、渡すだけです。std::cout。必ず最初に必要なHTTPヘッダーと空白行を書き出してください。そうしないと、サーバー/ブラウザーがJSONをHTTPヘッダーとして解釈しようとします。

void makejson(ostream & output, string content)
{
    /* output << "{\"some\":\"json\"}" */
}

// Write to file
ofstream file("data.json");
makejson(file, "somedata");
file.close();

// Write to browser
cout << "Content-Type: application/json\r\n\r\n";
makejson(cout, "somedata");
于 2012-06-27T21:21:48.610 に答える