TsgcHTTP3Server › Eventi › OnH3Request

OnH3Request Evento

Si attiva quando viene ricevuta una richiesta HTTP/3 completa, in modo che l'applicazione possa compilare la risposta.

Sintassi

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

Valore predefinito

—

Parametri

NomeTipoDescrizione
aConnectionconst TsgcQUICServerConnectionConnessione QUIC su cui è arrivata la richiesta (espone PeerIP, PeerPort e lo stato della connessione).
aRequestconst TsgcHTTP3RequestRichiesta ricevuta: Method, Path, Host, Scheme, Headers e il corpo Data.
aResponseconst TsgcHTTP3ResponseRisposta da compilare: impostare StatusCode, ContentType, gli Headers facoltativi e il corpo Data.

Note

OnH3Request viene generato una volta che il server ha ricevuto una richiesta HTTP/3 completa (gli header della richiesta, più il corpo per i metodi che ne prevedono uno come POST, PUT e PATCH). Il server crea l'oggetto aResponse prima di generare l'evento e ne preimposta lo StatusCode a 200, quindi un gestore che deve solo restituire un 200 vuoto può lasciarlo invariato. Compilare aResponse.StatusCode, aResponse.ContentType, aResponse.Headers e aResponse.Data come necessario; quando il gestore ritorna, il server codifica gli header con QPACK e invia automaticamente la risposta sullo stream di richiesta. Non è necessario chiamare SendResponse dall'interno di questo evento. Esaminare aRequest.Path e aRequest.Method per instradare la richiesta.

Esempio


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;

Torna agli Eventi