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
Release | Mudanças |
---|---|
20 R7 | Classe 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 |
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âmetro | Tipo | Descrição | |
---|---|---|---|
body | any | -> | 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âmetro | Tipo | Descrição | |
---|---|---|---|
| | Text | -> | Propriedade de cabeçalho para definir |
value | Text | -> | 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_=....
).
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âmetro | Tipo | Descrição | |
---|---|---|---|
status | Integer | -> | 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()
.