REST API

REST API

Médio

Instruções

Implementa uma API RESTful para registar IOUs.

Quatro colegas de casa têm o hábito de pedir dinheiro emprestado uns aos outros com frequência, e têm dificuldade em lembrar-se de quem deve a quem, e quanto.

A tua tarefa é implementar uma API RESTful simples que recebe IOUs como pedidos POST e consegue devolver informação de resumo específica através de pedidos GET.

Especificação da API

Objeto de utilizador

{
  "name": "Adam",
  "owes": {
    "Bob": 12.0,
    "Chuck": 4.0,
    "Dan": 9.5
  },
  "owed_by": {
    "Bob": 6.5,
    "Dan": 2.75
  },
  "balance": "<(total owed by other users) - (total owed to other users)>"
}

Métodos

Descrição Método HTTP URL Formato do payload Resposta sem payload Resposta com payload
Lista de informação dos utilizadores GET /users {"users":["Adam","Bob"]} {"users":<List of all User objects>} {"users":<List of User objects for <users> (sorted by name)}
Criar utilizador POST /add {"user":<name of new user (unique)>} N/A <User object for new user>
Criar IOU POST /iou {"lender":<name of lender>,"borrower":<name of borrower>,"amount":5.25} N/A {"users":<updated User objects for <lender> and <borrower> (sorted by name)>}

Outros recursos

Implementação

Implementa os métodos get e post da classe RestAPI.

Deves escrever apenas as funções de tratamento, sem implementar um servidor HTTP real. Podes simular a base de dados com um objeto em memória que vai conter todos os utilizadores armazenados. O construtor da classe RestAPI deve aceitar uma instância desta base de dados como argumento (e definir um valor predefinido para ela se não for passado nenhum argumento).

Para esta implementação, no caso de um pedido GET, a carga útil deve fazer parte do URL e deve ser tratada como parâmetros de consulta, por exemplo /users?users=Adam,Bob.

Editar via GitHub A ligação abre numa nova janela ou separador
JavaScript Exercism

Estás pronto para começar REST API?

Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.