TsgcHTTP3Server › Eventos › OnH3Request
Disparado quando uma requisição HTTP/3 completa é recebida para que a aplicação possa preencher a resposta.
property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object
—
| Name | Type | Descrição |
|---|---|---|
aConnection | const TsgcQUICServerConnection | Conexão QUIC em que a requisição chegou (expõe PeerIP, PeerPort e estado da conexão). |
aRequest | const TsgcHTTP3Request | Requisição recebida: Method, Path, Host, Scheme, Headers e o corpo Data. |
aResponse | const TsgcHTTP3Response | Resposta a preencher: defina StatusCode, ContentType, Headers opcionais e o corpo Data. |
OnH3Request é gerado assim que o servidor recebe uma requisição HTTP/3 completa (cabeçalhos da requisição, mais o corpo para métodos que o carregam, como POST, PUT e PATCH). O servidor cria o objeto aResponse antes de disparar o evento e pré-define seu StatusCode como 200; portanto, um handler que apenas precise retornar um 200 vazio pode deixá-lo sem alteração. Preencha aResponse.StatusCode, aResponse.ContentType, aResponse.Headers e aResponse.Data conforme necessário; quando o handler retornar, o servidor codificará os cabeçalhos com QPACK e enviará a resposta no stream da requisição automaticamente. Não é necessário chamar SendResponse dentro deste evento. Inspecione aRequest.Path e aRequest.Method para rotear a requisição.
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;