Pular para o conteúdo principal

Serviço

Com o Netuno é possível criar Web Services e construir qualquer tipo de APIs REST complexas.

Os serviços (Web Services) servem para realizar a integração de dados online, onde um sistema web pode trocar informação com outro.

Também serve para fornecer os dados para a frontend (páginas web) de forma assíncrona, permitindo à frontend carregar a parte visual da página web de forma mais rápida e obter a informação dinâmica através da integração com serviços (Web Services).

Isto permite proporcionar uma melhor experiência ao utilizador final, porque não fica à espera que a página toda seja processada pelo servidor e só depois devolvida, mas sim que o servidor envie rapidamente a estrutura da página que será apresentada e só depois é que efetua o carregamento gradual dos dados dinâmicos.

Editor

Para criar um serviço no Netuno é preciso um editor de código.

Recomendamos o Visual Studio Code, é gratuito, rápido, bastante simples e intuitivo.

Mas caso opte por qualquer outro editor de código funcionará de forma semelhante e todo o processo de desenvolvimento acaba por ser semelhante.

Abrir a Aplicação Demo

No Visual Studio Code ao clicar no canto esquerdo no primeiro ícone de ficheiros, tem a opção para Abrir uma Pasta (Open Folder).

Navegue nos sistema de ficheiros até a pasta onde tem o Netuno instalado.

Dentro da pasta do Netuno vá até ao diretório:

  • 📂 apps/demo

E quando estiver dentro da pasta demo clique em Abrir (Open).

Repare que a estrutura de pastas e de ficheiros da aplicação demo foram carregadas do lado esquerdo.

Criar Serviço

Os serviços são processados pelo servidor, assim para criar o serviço é preciso expandir as pastas e ir até a pasta:

  • 📂 server/services

Agora basta clicar com o botão direito em cima da pasta 📂 services e escolher a opção Novo Ficheiro (New File).

O nome do novo ficheiro deverá ser trabalhadores.js, vamos criar um serviço em JavaScript.

Basta agora realizar a codificação do nosso serviço, que será assim:

/**
*** Formata o objeto passado em JSON e realiza o seu output.
*/
const dbRegistos = _db.query(`
SELECT DISTINCT
trabalhador.nome, SUM(DATEDIFF(HOUR, registo.inicio, registo.fim)) AS total
FROM trabalhador INNER JOIN registo
ON trabalhador.id = registo.trabalhador_id
WHERE trabalhador.active = true AND registo.active = true
GROUP BY trabalhador.nome
ORDER BY total ASC
`);

const lista = _val.list();

for (const dbRegisto of dbRegistos) {
lista.add(
_val.map()
.set("name", dbRegisto.getString("nome"))
.set("total", dbRegisto.getInt("total"))
);
}

_out.json(lista);

Certifique há dados carregados nas Tarefas e que estão relacionadas com o Registo, caso contrário o resultado será vazio.

O _db.query recebe uma string com uma consulta de base de dados e realiza a sua execução transformando os dados obtidos numa lista de objectos do tipo chave-valor, ou seja coluna-dados.

O _out.json realiza o output (saída de dados) para o browser do tipo ContentType: application/json e formata o objeto passado para ser estruturado como um objeto JSON.

Executar o Serviço

Para executar o serviço basta abrir no browser o endereço do serviço criado, que neste caso será:

Neste caso recomendamos o Firefox por que permite uma melhor visualização do objeto JSON.