TsgcHTTP3Server › Zdarzenia › OnH3Request

OnH3Request Zdarzenie

Wywoływane po odebraniu kompletnego żądania HTTP/3, aby aplikacja mogła wypełnić odpowiedź.

Składnia

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

Wartość domyślna

—

Parametry

NazwaTypOpis
aConnectionconst TsgcQUICServerConnectionPołączenie QUIC, na którym dotarło żądanie (udostępnia PeerIP, PeerPort i stan połączenia).
aRequestconst TsgcHTTP3RequestOdebrane żądanie: Method, Path, Host, Scheme, Headers oraz treść Data.
aResponseconst TsgcHTTP3ResponseOdpowiedź do uzupełnienia: ustaw StatusCode, ContentType, opcjonalne Headers i treść Data.

Uwagi

OnH3Request jest wywoływane po odebraniu przez serwer kompletnego żądania HTTP/3 (nagłówki żądania oraz treść dla metod, które ją zawierają, takich jak POST, PUT i PATCH). Serwer tworzy obiekt aResponse przed wywołaniem zdarzenia i ustawia jego StatusCode na 200, więc procedura obsługi, która musi jedynie zwrócić pustą odpowiedź 200, może pozostawić go bez zmian. Wypełnij pola aResponse.StatusCode, aResponse.ContentType, aResponse.Headers i aResponse.Data według potrzeb; po powrocie procedury obsługi serwer automatycznie zakoduje nagłówki za pomocą QPACK i wyśle odpowiedź w strumieniu żądania. Nie ma potrzeby wywoływania SendResponse wewnątrz tego zdarzenia. Sprawdź pola aRequest.Path i aRequest.Method, aby przekierować żądanie.

Przykład


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;

Powrót do Zdarzeń