Este é o servidor de exercícios de JavaScript desenvolvido para a disciplina Tecnologias Web.
Não existe uma página para visualizar nem submeter os exercícios. Na verdade, você está vendo a única página do servidor de exercícios (ou quase isso, mas eu vou deixar você descobrir por conta própria).
Consideramos aqui uma página como "um documento que pode ser mostrado em um navegador web".
Além das páginas, existem diversos outros dados sendo transmitidos pela web. Um dos objetivos deste servidor, além de treinar JavaScript, é deixar isso claro. Por isso, todo o processo será realizado sem a necessidade de uma página para visualizar a informação. Claro que você pode desenvolver uma página para esse fim, o que pode facilitar muito a sua vida, mas isso não é necessário.
Utilize esta página como guia para realizar os exercícios.
Agora sim, siga os passos a seguir para começar executar o código JavaScript:
axios
para fazer requisições pelo JavaScript:$ npm install axios
client.js
(na verdade pode ter qualquer nome);const axios = require("axios");
axios
.get("https://catfact.ninja/fact")
.then((response) => console.log(response.data.fact));
$ node client.js
.gitignore
para projetos NodeJS;Se preferir, você pode criar uma página HTML e carregar o JavaScript em uma tag script
. Uma vantagem dessa abordagem é que você pode utilizar a página para visualizar informações úteis, como o resultado das submissões. Fique à vontade para implementar como preferir.
Para enviar suas soluções para o servidor é necessário obter um token de acesso. Esse token permite que o servidor te identifique como o autor das requisições.
O token tem validade de 1 minuto. Submissões realizadas com o mesmo token após esse tempo serão ignoradas. Para tentar novamente basta obter um novo token de acesso e reenviar as suas submissões. O servidor considerará apenas as submissões realizadas com o último token utilizado.
A solução de cada exercício será feita por uma submissão separada dentro desse período de 1 minuto. Portanto será necessário armazenar o token recebido em uma variável. Você até pode correr para fazer todas as submissões manualmente, mas, como bom programador(a), eu sei que você vai fazer tudo programaticamente ;-)
Para obter o token de acesso, siga os passos a seguir:
client.js
, realize uma requisição POST para https://servidor-exercicios-js.vercel.app/token
(este post sobre como usar o axios
pode ser útil) enviando o seguinte conteúdo no formato JSON: {username: "NOME DE USUÁRIO"}
(utilize o seu nome de usuário Insper);Content-Type
e Accept
como "application/json"
(veja como enviar um cabeçalho customizado aqui);accessToken
. Essa string é o seu token de acesso. Agora está tudo pronto para obter a lista de exercícios (que já é por si só o primeiro exercício :-)Os exercícios podem ser obtidos fazendo uma requisição GET para https://servidor-exercicios-js.vercel.app/exercicio
. Não se esqueça de definir o Content-Type
e o Accept
como "application/json"
e o Authorization
com a string "Bearer TOKEN"
, substituindo TOKEN
pelo accessToken
recebido no passo anterior, em todas as suas requisições para o servidor a partir deste ponto.
A lista de exercícios é representada por um objeto (pode ser usado como o dicionário do Python) no qual as chaves são a slug do exercício e o valor é um objeto (dicionário) com as chaves:
titulo
: string com o título da questão;descricao
: string com a descrição da questão;entrada
: objeto com os valores de entrada do problema - esse objeto é criado com valores aleatórios para cada novo token;pontuacao
: pontuação da questão.Exemplo:
{
multiplicacao: {
titulo: 'Multiplicação de valores',
descricao: 'Qual é o resultado de m * n?',
entrada: { m: 142, n: 745 },
pontuacao: 0.5
},
dobro: {
titulo: 'Dobro do número',
descricao: 'Qual é o dobro de a?',
entrada: { a: 14 },
pontuacao: 0.5
},
}
Agora que você tem a lista de exercícios, você pode resolvê-los como preferir. Alguns deles são como quebra-cabeças. Você vai precisar fazer requisições adicionais para descobrir o resultado final.
Os valores de entrada sempre mudam (a cada novo token gerado). Por esse motivo, o seu código deve funcionar para entradas aleatórias, não apenas a que você recebeu nesse momento. Como você vai implementar isso? Vou deixar você decidir ;-)
Para submeter a resposta de uma questão, você deve fazer uma requisição POST para https://servidor-exercicios-js.vercel.app/exercicio/SLUG
, onde SLUG
é o slug do exercício para o qual você deseja enviar a solução. Nessa requisição, você deve enviar a resposta da questão em um dicionário JSON com a chave resposta
.
Por exemplo, para o exemplo da multiplicação acima, você deveria fazer um POST para https://servidor-exercicios-js.vercel.app/exercicio/multiplicacao
com o JSON { "resposta": 105790 }
. Novamente, não se esqueça dos cabeçalhos Content-Type
, Accept
e Authorization
.
A requisição POST com a submissão da resposta de um dado exercício será respondida com um JSON contendo um valor booleano na chave sucesso
. Se esse valor for verdadeiro, você acertou a resposta e a pontuação dela será considerada na sua nota.
Você também pode verificar a sua situação atual no servidor consultando https://servidor-exercicios-js.vercel.app/?username=SEU_USUARIO
, substituindo SEU_USUARIO
pelo seu nome de usuário Insper.
O seu código (apenas um arquivo .js
) deve ser entregue via Blackboard. Nenhum outro formato será aceito. Qualquer formato diferente de .js
receberá nota zero. A única biblioteca externa permitida é o axios
.
Obter o token e a lista de exercícios já são exercícios por si só e valem, cada um, 0,5 ponto.