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
eMemoryStream
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