TsgcHTTP3Server › イベント › OnH3Request

OnH3Request イベント

完全な HTTP/3 リクエストが受信されると、アプリケーションがレスポンスを設定できるように発生します。

構文

property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object

デフォルト値

—

パラメータ

名前タイプ説明
aConnectionconst TsgcQUICServerConnectionリクエストが到着した QUIC 接続(PeerIP、PeerPort および接続状態を公開します)。
aRequestconst TsgcHTTP3Request受信したリクエスト: Method、Path、Host、Scheme、Headers および Data ボディ。
aResponseconst TsgcHTTP3Response設定するレスポンス:StatusCode、ContentType、オプションの Headers および Data ボディを設定してください。

解説

OnH3Request は、サーバーが完全な HTTP/3 リクエスト(リクエストヘッダー、および POST、PUT、PATCH など、ボディを持つメソッドの場合はボディも含む)を受信すると発生します。サーバーはイベントを発生させる前に aResponse オブジェクトを作成し、StatusCode をデフォルトで 200 に設定します。そのため、空の 200 を返すだけのハンドラはそのままにできます。必要に応じて aResponse.StatusCode、aResponse.ContentType、aResponse.Headers および aResponse.Data を設定してください。ハンドラが返ると、サーバーはヘッダーを QPACK エンコードし、リクエストストリームにレスポンスを自動的に送信します。このイベント内から SendResponse を呼び出す必要はありません。aRequest.Path と aRequest.Method を検査してリクエストをルーティングしてください。

使用例


procedure OnH3RequestEvent(Sender: TObject; const aConnection:
    TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request;
    const aResponse: TsgcHTTP3Response);
begin
  if aRequest.Path = '/hello' then
  begin
    aResponse.StatusCode := 200;
    aResponse.ContentType := 'text/plain';
    aResponse.Data := TEncoding.UTF8.GetBytes('Hello HTTP/3');
  end
  else
    aResponse.StatusCode := 404;
end;

イベントに戻る