Class: RouteResult

@nginstack/engine/lib/router/RouteResult~ RouteResult


new RouteResult(opt_base)

Resultado de um controlador para uma requisição HTTP no atendimento de uma rota. Por padrão, o resultado terá o código de estado 200 (OK) e será vazio.
Todos os métodos deste objeto retornam um novo resultado com a modificação indicada pelo nome do método. Eles sempre retornam a própria instância do objeto, permitindo uma cadeia de chamadas.

Parameters:
Name Type Description
opt_base RouteResult

Resultado base do qual esta instância está sendo derivada. Esta nova instância herdará todas as propriedades definidas em opt_base.

Example
const RouteResult = require('@nginstack/engine/lib/router/RouteResult');
const result = RouteResult()
  .withStatus(Status.NOT_FOUND)
  .withContent(error);

Members


<static, constant> MAX_BASE_CHAIN :number

Limite máximo de resultados ligados por meio da propriedade #base_. Utilizado para detectar laços infinitos na cadeia.

Type:
  • number

charset :string|null

Codificação de caracteres empregada no conteúdo da resposta. Caso não seja informada, será utilizada a codificação UTF-8 na resposta de conteúdos textuais, como os tipos de mídia text/* e "application/json", exceto se o tipo de resposta informado ao método #as possuir o atributo "charset" indicando a codificação da resposta. Caso o tipo de resposta possua esse atributo, o sistema não realizará nenhum tipo de codificação automática se não for solicitada uma pelo método #withCharset.

Ver isTextualType para mais detalhes de quais tipos de conteúdo são considerados textuais.

Type:
  • string | null

content :*

Conteúdo a ser enviado como resposta da requisição HTTP.

Conteúdos do tipo File e MemoryStream são recomendados em respostas de tamanho elevado onde se deseja evitar a alocação de memória (File) ou a alocação de strings temporárias (MemoryStream). Por padrão, o tipo do conteúdo será "application/octet-stream" quando utilizado um desses tipos, devendo ser utilizado o método #as para definir um tipo diferente desse caso seja necessário. Diferentemente de conteúdos textuais, não será realizada a codificação do conteúdo, sendo necessário que ele já esteja na codificação esperada pelo cliente, normalmente UTF-8.

Type:
  • *

contentType :MediaType

Tipo do conteúdo da resposta da requisição HTTP. Ele será inferido a partir do tipo de #content caso não seja informado via método #as.

Conteúdos do tipo string serão considerados como texto (text/plain), instâncias de File e MemoryStream serão considerados binários e os demais objetos serão convertidos em JSON (application/json). Outras transformações mais especializadas podem ser registradas por meio do método RouteResult#addTransform.

Type:
  • MediaType

headers :Object.<string>

Cabeçalhos da resposta da requisição HTTP. Por padrão, todos os nomes de cabeçalhos serão em maiúsculas.

Type:
  • Object.<string>

status :Status|number

Código do estado da resposta.

Type:
  • Status | number

Methods


<static> addTransformer(transformer)

Registra uma transformação de conteúdo que deverá ser realizada antes deste resultado ser enviado como uma resposta da requisição. Transformações possibilitam que objetos mais complexos não seja simplesmente convertidos em JSON ou que o código da resposta seja alterado de acordo com o tipo do conteúdo.

É recomendado que as transformações de resultados sejam registradas em arquivos de inicialização no diretório /Configuração/Inicialização do Roteador HTTP.
As funções de transformação serão executadas na ordem contrária em que foram adicionadas, garantindo que as transformações básicas de tratamento de erro e conversão para JSON sejam as últimas a serem executadas, possibilitando que os desenvolvedores da plataforma façam alterações no resultado da requisição antes que essas transformações finais sejam executadas.

Parameters:
Name Type Description
transformer function

Função que receberá o resultado de um controlador e a requisição HTTP, podendo transformar esse resultado. Caso a função de transformação não deseje alterar o resultado, ele deverá retornar a instância recebida sem alterações. Também poderá ser informado um array de funções.

Example
// Registrada uma transformação que indica que qualquer erro do tipo PermissionError deve
 // ser retornado com o status FORBIDDEN
 RouteResult.addTransformer(function (result, request) {
   if (result.content instanceof PermissionError) {
     return result.withStatus(Header.FORBIDDEN);
   } else {
     return result;
   }
 });

<static> removeAllTransformers()

Remove todas as funções de transformações registradas.


<static> transform(result, request)

Realiza a transformação dos dados a serem enviados na resposta HTTP, onde utiliza os métodos registrados em DefaultResultTransforms.

Parameters:
Name Type Description
result RouteResult

Resultado a ser transformado.

request Request

Requisição HTTP.

Returns:

Conteúdo do resultado transformado.

Type
RouteResult

as(contentType)

Cria um novo resultado com o tipo de conteúdo informado.

Parameters:
Name Type Argument Description
contentType MediaType <nullable>

Tipo do conteúdo.

Returns:

Nova instância de RouteResult com o tipo de conteúdo informado.

Type
RouteResult

send(response [, options])

Envia o resultado para o cliente.

Parameters:
Name Type Argument Description
response Response

Tratador de resposta que deve ser utilizado para enviar o resultado.

options Object <optional>

Parâmetros opcionais.

Properties
Name Type Argument Description
onlyHeaders boolean <optional>

Emite a resposta sem o conteúdo, enviando apenas os cabeçalhos.

debug boolean <optional>

Indica que devem ser registrado no log detalhes sobre a requisição e a resposta.


withCharset(charset)

Cria um novo resultado com a codificação de caracteres informada. Este método provocará a conversão do conteúdo da resposta para a codificação desejada caso ela seja suportada pelo Engine e se o conteúdo da resposta for uma string ou um objeto que não seja um File, MemoryStream, ArrayBuffer ou Uint8Array. Para instâncias dessas classes, os dados da resposta já devem ser informados na na codificação desejada e o sistema não fará nenhum tipo de codificação automática no envio da resposta.

Atualmente são suportadas as codificações 'iso-8859-1', 'utf-8' e 'windows-1252'.

Parameters:
Name Type Description
charset string | null

Codificação de caracteres.

Returns:

Nova instância de RouteResult com a codificação de caracteres informada.

Type
RouteResult

withContent(content)

Cria um novo resultado com o conteúdo informado.

Parameters:
Name Type Description
content *

Conteúdo da resposta.

Returns:

Nova instância de RouteResult com o conteúdo informado.

Type
RouteResult

withHeader(name, value)

Cria um novo resultado com cabeçalho de resposta informado.

Parameters:
Name Type Description
name string

Nome do cabeçalho.

value string

Valor do cabeçalho.

Returns:

Nova instância de RouteResult com o cabeçalho informado.

Type
RouteResult

withHeaders(headers)

Cria um novo resultado com os cabeçalhos de resposta informados.

Parameters:
Name Type Description
headers Object.<string>

Mapa associando o nome dos cabeçalhos aos seus valores.

Returns:

Nova instância de RouteResult com os cabeçalhos informados.

Type
RouteResult

withStatus(status)

Cria um novo resultado com o status informado.

Parameters:
Name Type Description
status Status | number

Status da resposta.

Returns:

Nova instância de RouteResult com o conteúdo informado.

Type
RouteResult