TsgcHTTP3Server › Eventos › OnH3Request

OnH3Request Evento

Disparado quando uma requisição HTTP/3 completa é recebida para que a aplicação possa preencher a resposta.

Sintaxe

property OnH3Request: TsgcHTTP3RequestEvent;
// TsgcHTTP3RequestEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response) of object

Valor Padrão

—

Parâmetros

NameTypeDescrição
aConnectionconst TsgcQUICServerConnectionConexão QUIC em que a requisição chegou (expõe PeerIP, PeerPort e estado da conexão).
aRequestconst TsgcHTTP3RequestRequisição recebida: Method, Path, Host, Scheme, Headers e o corpo Data.
aResponseconst TsgcHTTP3ResponseResposta a preencher: defina StatusCode, ContentType, Headers opcionais e o corpo Data.

Observações

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.

Exemplo


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;

Voltar para Eventos