TsgcHTTP3Server › Events › OnH3Request
Wordt geactiveerd wanneer een volledig HTTP/3-verzoek is ontvangen zodat de applicatie het antwoord kan invullen.
property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object
—
| Naam | Type | Beschrijving |
|---|---|---|
aConnection | const TsgcQUICServerConnection | QUIC-verbinding waarop de aanvraag is aangekomen (geeft PeerIP, PeerPort en verbindingsstatus weer). |
aRequest | const TsgcHTTP3Request | Ontvangen verzoek: Method, Path, Host, Scheme, Headers en de Data-body. |
aResponse | const TsgcHTTP3Response | Antwoord in te vullen: stel StatusCode, ContentType, optionele Headers en de Data-berichttekst in. |
OnH3Request wordt geactiveerd zodra de server een volledig HTTP/3-verzoek heeft ontvangen (verzoekheaders, plus de body voor methoden die er een bevatten, zoals POST, PUT en PATCH). De server maakt het aResponse-object aan vóór het activeren van het event en stelt de StatusCode vooraf in op 200, zodat een handler die alleen een lege 200 moet retourneren dit ongewijzigd kan laten. Vul aResponse.StatusCode, aResponse.ContentType, aResponse.Headers en aResponse.Data naar behoefte in; wanneer de handler terugkeert, QPACK-codeert de server automatisch de headers en verstuurt het antwoord op de verzoekstream. Het is niet nodig om SendResponse vanuit dit event aan te roepen. Inspecteer aRequest.Path en aRequest.Method om het verzoek te routeren.
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;