REST API

REST API

Médio

Instruções

Implemente uma API RESTful para acompanhar IOUs.

Quatro colegas de quarto costumam pegar dinheiro emprestado uns com os outros com frequência e têm dificuldade para lembrar quem deve a quem e quanto.

Sua tarefa é implementar uma API RESTful simples que recebe IOUs como requisições POST e consegue fornecer informações resumidas específicas por meio de requisições GET.

Especificação da API

Objeto de usuário

{
  "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ções de usuários GET /users {"users":["Adam","Bob"]} {"users":<List of all User objects>} {"users":<List of User objects for <users> (sorted by name)}
Criar usuário 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

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

Você deve escrever apenas as funções handler, sem implementar um servidor HTTP de verdade. Você pode simular o banco de dados com um objeto em memória que vai conter todos os usuários armazenados. O construtor da classe RestAPI deve aceitar uma instância desse banco de dados como argumento (e definir um valor padrão para ela caso nenhum argumento seja passado).

Para esta implementação, no caso de uma requisição GET, o payload deve fazer parte da URL e deve ser tratado como parâmetros de consulta, por exemplo /users?users=Adam,Bob.

Editar via GitHub O link abre em uma nova janela ou aba
JavaScript Exercism

Tudo pronto para começar REST API?

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.