CGI library for C++ ドキュメント【日本語】
C++ CGI ライブラリ [日本語]
このライブラリは、C++でCGI(Common Gateway Interface)アプリケーションを作成するためのシンプルなインターフェースを提供します。GETとPOSTのリクエストの処理、クエリ文字列とPOSTデータの解析、セッションIDの管理を可能にします。
特徴
- クエリ文字列の解析: GETリクエストからクエリ文字列を簡単に解析し、パラメータへのアクセスを容易にするための`
std::map
`に格納します。 - POSTデータの解析: POSTリクエストデータを扱い、パラメータの取得を容易にするための`
std::map
`に解析します。 - セッション管理:セッションIDを生成および管理し、リクエスト間でのセッション状態を維持します。
- リクエスト処理: 現在のリクエストメソッドに基づいてGETまたはPOSTリクエストから特定のパラメータ値を取得します。
ソースコード
ダウンロード
CGI library for C++(Github)
- Githubリポジトリ:https://github.com/yymo10/cpp_cgi.git
- Zipファイルダウンロード:https://github.com/yymo10/cpp_cgi/archive/refs/heads/master.zip
CGIクラス
このCGIクラスは、C++で記述されたWebアプリケーションのための基本的なCGI (Common Gateway Interface) 処理機能を提供します。このクラスを使用することで、WebフォームからのGETまたはPOSTリクエストを簡単に処理し、セッションIDを生成して管理することができます。以下に、各メソッドの概要を説明します。
コンストラクタ
CGI()
: クラスのインスタンスが生成されると自動的にセッションIDを生成します。
メソッド
- `
parseQueryString()
`: URLのクエリストリングからGETパラメータを解析し、std::map<std::string, std::string>
形式で返します。これにより、キーと値のペアでクエリパラメータにアクセスできます。 - `
parse_post_data()
`: 標準入力からPOSTデータを読み取り、同様にstd::map<std::string, std::string>
形式で返します。 - `
POST_(std::string param)
`: 指定されたPOSTパラメータの値を取得します。存在しない場合は未定義の動作をします。 - `
GET_(std::string param)
`: 指定されたGETパラメータの値を取得します。パラメータが存在しない場合、空文字列を返します。 - `
REQUEST_(std::string param)
`: 環境変数REQUEST_METHODを使用して、リクエストがGETまたはPOSTのどちらであるかを判断し、適切な方法でパラメータの値を取得します。 - `
GenerateSessionId()
`: セッションIDをランダムに生成します。このIDは、ユーザーがサイトを訪問している間、一貫した識別子として機能します。 - `
SESSION_ID()
`: 現在のセッションIDを取得します。
使用例
このクラスは、Webアプリケーションでユーザーからの入力を扱い、セッション管理を行う際に便利です。例えば、ユーザーがフォームを通じて情報を送信した場合、このクラスを使用してデータを解析し、処理することができます。さらに、セッションIDを使用して、ユーザーのセッションを特定し、認証や状態の管理に利用することが可能です。
注意点
parse_post_data()
メソッドは、std::cin
を使用してPOSTデータを読み取るため、CGI環境でのみ動作します。
POST_メソッドは、キーが見つからない場合に未定義の動作をしますので、実際の使用ではキーの存在を先に確認するか、例外処理を適切に行う必要があります。
SESSION_IDメソッドは、セッションIDが空でない場合にのみその値を返しますが、通常はセッションIDが生成されていない状況は発生しません。
このクラスは、C++でCGIベースのWebアプリケーションを開発する際の基盤として利用でき、フォームデータの処理やセッション管理を容易にします。
コンパイル手順について
C++で記述されたCGIクラスを含むプログラムをコンパイルするには、`g++
`や`clang++
`などのC++コンパイラが必要です。以下に`g++
`を使用したプログラムのコンパイル例を示します。
- CGIクラスを含むプログラムを
main.cpp
というファイルに保存します。 - ターミナルまたはコマンドプロンプトを開きます。
main.cpp
が存在するディレクトリにナビゲートします。- 以下のコマンドを使用してプログラムをコンパイルします。
g++ main.cpp -std=c++11 -o ./cgi/main.cgi
このコマンドはg++
にmain.cpp
をコンパイルし、実行可能ファイル./cgi/main.cgi
を出力するよう指示します。
注意点
ライブラリを格納しているディレクトリ指定がある場合、./lib/
内のC++ファイルをすべて指定したディレクトリに格納する必要があります。
使い方
ライブラリのインクルード
ソースファイルに`#include "CGI.h"
`を追加してプロジェクトにCGIライブラリを含めます。
インスタンスの作成
アプリケーションでCGIクラスをインスタンス化し、その機能を使用開始します。
CGI cgi;
リクエストの処理
GETまたはPOSTリクエストから特定のパラメータ値を取得するには
std::string value = cgi.REQUEST_("paramName");
セッションID
現在のセッションIDを取得するには:
std::string sessionId = cgi.SESSION_ID();
貢献について
CGIライブラリに対する貢献を心から歓迎いたします。ご提供いただくコードがプロジェクトのコーディング規約に準拠していることをご確認の上、新たな機能追加やバグ修正には必ずユニットテストを添付してください。
ライセンス
本ライブラリはMITライセンスのもとでオープンソースとして公開されています。ライセンス契約の条件に従って、皆様のプロジェクトで自由にご利用いただけます。