TsgcHTTP3Server › Zdarzenia › OnH3Request
Wywoływane po odebraniu kompletnego żądania HTTP/3, aby aplikacja mogła wypełnić odpowiedź.
property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object
—
| Nazwa | Typ | Opis |
|---|---|---|
aConnection | const TsgcQUICServerConnection | Połączenie QUIC, na którym dotarło żądanie (udostępnia PeerIP, PeerPort i stan połączenia). |
aRequest | const TsgcHTTP3Request | Odebrane żądanie: Method, Path, Host, Scheme, Headers oraz treść Data. |
aResponse | const TsgcHTTP3Response | Odpowiedź do uzupełnienia: ustaw StatusCode, ContentType, opcjonalne Headers i treść Data. |
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.
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;