Saltar para o conteúdo principal
Versão: Próximo

OutgoingMessage

A classe 4D.OutgoingMessage permite que você crie mensagens a serem retornadas pelas funções do seu aplicativo em resposta a [solicitações REST] (../REST/REST_requests.md). Se a resposta for do tipo 4D.OutgoingMessage, o servidor REST não retornará um objeto, mas a instância do objeto da classe OutgoingMessage.

Typically, this class can be used in custom HTTP request handler functions or in functions declared with the onHttpGet keyword and designed to handle HTTP GET requests. Tais solicitações são usadas, por exemplo, para implementar recursos como arquivo de download, Gerar e baixar imagens, bem como receber qualquer tipo de conteúdo por um navegador.

Uma instância desta classe é construída no Servidor 4D e pode ser enviada para o navegador pelo 4D Servidor REST apenas. Essa classe permite usar tecnologias diferentes do HTTP (por exemplo, mobile).

História
ReleaseMudanças
20 R7Classe adicionada

Exemplo

Neste exemplo, uma função getFile() está implementada na classe Datastore e pode ser chamada por uma solicitação REST. O objetivo é retornar um arquivo testFile.pdf como resposta à solicitação:

Class extends DataStoreImplementation

exposed onHTTPGet Function getFile() : 4D.OutgoingMessage

var $result:=4D.OutgoingMessage.new()
var $file:=File("/RESOURCES/testFile.pdf")

$result.setBody($file.getContent()) // This is binary content
$result.setHeader("Content-Type"; "application/pdf")
return $result

Objeto OutgoingMessage

Os objetos 4D.OutgoingMessage fornecem as seguintes propriedades e funções:

body : any
o corpo da mensagem enviada
headers : Object
os cabeçalhos atuais da mensagem de saída como pares chave/valor
.setBody( body : any )
define a mensagem de saída body
.setHeader( key : Text ; value : Text )
define o cabeçalho de mensagem de saída chave com o valor
.setStatus( status : Integer )
define a propriedade status com o status
status : Integer
o status atual da mensagem de saída
nota

Um objeto 4D.OutgoingMessage é um objeto não compartilhável.

.body

body : any

Descrição

A propriedade .body contém o corpo da mensagem enviada. Os seguintes tipos de dados são suportados na propriedade .body:

  • text
  • blob
  • object
  • image

A propriedade .body é de leitura e gravação.

Você também pode definir a propriedade .body usando a função setBody(), caso em que o cabeçalho content-type é automaticamente definido.

.headers

headers : Object

Descrição

A propriedade .headers contém os cabeçalhos atuais da mensagem de saída como pares chave/valor.

A propriedade .headers é somente leitura. Para definir um cabeçalho, use a função setHeader().

.setBody()

.setBody( body : any )

ParâmetroTipoDescrição
bodyany->Corpo da mensagem de saída

Descrição

A função .setBody() define a mensagem de saída body.

Os seguintes tipos de dados são suportados no corpo:

  • Text
  • Blob
  • Object
  • Imagem

Quando essa função é usada, o cabeçalho do tipo de conteúdo é definido automaticamente dependendo do tipo corpo:

  • Content-Type:text/plain se o corpo é um Texto
  • Content-Type:application/octet-stream se o corpo é um Blob
  • Content-Type:application/json se o corpo é um objeto
  • Conteúdo-Tipo:image/jpeg, imagem/gif... se o corpo for uma imagem

Se body não for de um tipo de valor suportado, um erro é retornado.

.setHeader()

.setHeader( key : Text ; value : Text )

ParâmetroTipoDescrição
|Text->Propriedade de cabeçalho para definir
valueText->Valor da propriedade do cabeçalho

Descrição

A função .setHeader() define o cabeçalho de mensagem de saída chave com o valor. Se ambos os parâmetros não são valores de texto, um erro é gerado.

Ao retornar uma instância de objeto 4D.OutgoingMessage, 4D automaticamente define alguns cabeçalhos (por exemplo, Set-Cookie com WASID4D=... e 4DSID__ProjectName_=....).

nota

Se você definir um valor para o cabeçalho "Content-Type" chave, certifique-se de chamar esta função depois da chamada para setBody(), porque setBody() preenche automaticamente este cabeçalho. Para obter uma lista de valores de cabeçalho "Content-Type", por favor, consulte a documentação do WEB SEND BLOB.

.setStatus()

.setStatus( status : Integer )

ParâmetroTipoDescrição
statusInteger->Status para definir

Descrição

A função .setStatus() define a propriedade status com o status.

Se status não for um valor inteiro, um erro é gerado.

Para obter uma lista de códigos de status HTTP, por favor, consulte a lista de código de status HTTP na Wikipedia.

.status

status : Integer

Descrição

A propriedade .status contém o status atual da mensagem de saída . Essa propriedade pode ser definida com a função setStatus().