TsgcHTTP3Server › Eventi › OnH3Request
Si attiva quando viene ricevuta una richiesta HTTP/3 completa, in modo che l'applicazione possa compilare la risposta.
property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object
—
| Nome | Tipo | Descrizione |
|---|---|---|
aConnection | const TsgcQUICServerConnection | Connessione QUIC su cui è arrivata la richiesta (espone PeerIP, PeerPort e lo stato della connessione). |
aRequest | const TsgcHTTP3Request | Richiesta ricevuta: Method, Path, Host, Scheme, Headers e il corpo Data. |
aResponse | const TsgcHTTP3Response | Risposta da compilare: impostare StatusCode, ContentType, gli Headers facoltativi e il corpo Data. |
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.
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;