TsgcHTTP3Server › Eventos › OnH3Request
Se activa cuando se recibe una solicitud HTTP/3 completa para que la aplicación pueda rellenar la respuesta.
property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object
—
| Nombre | Tipo | Descripción |
|---|---|---|
aConnection | const TsgcQUICServerConnection | Conexión QUIC por la que llegó la solicitud (expone PeerIP, PeerPort y el estado de la conexión). |
aRequest | const TsgcHTTP3Request | Solicitud recibida: Method, Path, Host, Scheme, Headers y el cuerpo Data. |
aResponse | const TsgcHTTP3Response | Respuesta que se debe rellenar: establezca StatusCode, ContentType, las Headers opcionales y el cuerpo Data. |
OnH3Request se genera una vez que el servidor ha recibido una solicitud HTTP/3 completa (las cabeceras de la solicitud, más el cuerpo para los métodos que lo llevan, como POST, PUT y PATCH). El servidor crea el objeto aResponse antes de activar el evento y preestablece su StatusCode en 200, por lo que un controlador que solo necesita devolver un 200 vacío puede dejarlo sin tocar. Rellene aResponse.StatusCode, aResponse.ContentType, aResponse.Headers y aResponse.Data según sea necesario; cuando el controlador retorna, el servidor codifica las cabeceras con QPACK y envía la respuesta en el stream de solicitud automáticamente. No es necesario llamar a SendResponse dentro de este evento. Inspeccione aRequest.Path y aRequest.Method para enrutar la solicitud.
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;