Enviando Respostas no Express com Node.js
Para enviar respostas no Express, o objeto response pode usar várias funções. A forma mais comum de enviar uma resposta é utilizando a função send()
. Como parâmetro, essa função pode receber um objeto Buffer, uma string (inclusive com código HTML), um objeto JavaScript ou um array.
const express = require("express");
const app = express();
app.use(function (_, response) {
response.send("<h2>Hello</h2>");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Para enviar um objeto, podemos usar:
response.send({ id: 6, name: "Tom" });
Para enviar um array:
response.send(["Tom", "Bob", "Sam"]);
Para enviar um Buffer
response.send(Buffer.from("Hello Express"));
O objeto Buffer representa alguns dados binários. No exemplo acima, ao executar o código, o navegador carregará um arquivo que contém a string "Hello Express".
Enviando Arquivos com sendFile
O método send
é conveniente para enviar strings e algum código HTML de pequeno tamanho. No entanto, se o código HTML a ser enviado for muito grande, o código da aplicação também se tornará volumoso. Por exemplo, podemos escrever assim:
const express = require("express");
const app = express();
app.use(function (_, response) {
response.send(`<!DOCTYPE html>
<html>
<head>
<title>Principal</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Página Principal</h1>
<h3>Olá, Express</h3>
</body>
</html>`);
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Enviamos este arquivo utilizando a função sendFile
:
const express = require("express");
const app = express();
app.use(function (_, response) {
response.sendFile(__dirname + "/index.html");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Finalmente, o resultado será o mesmo.
É importante observar que a função sendFile precisa de um caminho absoluto para o arquivo. Para isso, utilizamos __dirname
para obter o caminho absoluto do projeto atual e, em seguida, adicionamos o caminho do arquivo dentro do projeto.
Enviando Códigos de Status
A função sendStatus()
envia ao usuário um código de status específico com uma mensagem padrão. Por exemplo, vamos enviar o código de status 404, que indica que o recurso não foi encontrado:
const express = require("express");
const app = express();
app.use("/home/foo/bar", function (_, response) {
response.sendStatus(404);
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Como mostrado no exemplo, ao enviar o código de status 404, também é enviada a mensagem "Not Found". Se quisermos enviar mensagens mais informativas, podemos usar a combinação da função status()
, que também envia o código de status, com a função send()
:
const express = require("express");
const app = express();
app.use("/home/foo/bar", function (request, response) {
response.status(404).send("Recurso não encontrado");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));