Skip to content

Latest commit

 

History

History
118 lines (80 loc) · 4.22 KB

desafios.md

File metadata and controls

118 lines (80 loc) · 4.22 KB

🏆 Desafios

À partir de agora, o seu desafio é continuar escrevendo as funcionalidades que faltam, mas vou te dar umas dicas.

Relembrando, ainda temos as seguintes tarefas a serem feitas.

  • Deve apresentar uma interface que possa ser consumida tanto por um website, quanto por um aplicativo para dispositivos móveis;

  • Deve prover um endpoint que indique a saúde do sistema;

  • Dado um pedido, retornar os seus itens;

  • Os itens de um pedido devem conter um identificador (sku), uma descrição, uma imagem, uma referência e a quantidade.

  • Exibir um relatório com o total de métodos de pagamento utilizados nos últimos 30 pedidos;

  • Dado um pedido (vários itens), enriquecer a informação com as informações de gtin (global trade item number). Deve ser retornado também a marca, descrição e identificação do produto.

  • Como será consumido por terceiros deve apresentar boa documentação;

  • O sistema deve estar preparado para receber novas funcionalidades, garantindo qualidade a cada entrega;

  • O sistema deve apresentar testes.

⚠️ Como as APIs abertas do Magalu se encontram em alpha, uma autorização prévia é necessária. Por isso, você pode utilizar uma versão simulada da mesma. Se não lembra os endpoints disponíveis, volte na página onde exploramos a API.

📊 Relatório

Exibir um relatório com o total de métodos de pagamento utilizados nos últimos 30 pedidos (em um cenário real este critério seria outro como uma data).

Para obter esta informação precisamos de consultar a api de pedidos do Magalu.

Verifique o endpoint que contém esta informação e se atente à paginação do recurso, ou seja, a página só contem 10 pedidos.

Nosso endpoint será /report/ e o seu formato de resposta será um JSON.

O código de status será 200 OK.

Vamos utilizar o mesmo X-Tenant-id que já utilizamos para acessar a API de pedidos. Este valor seria dinâmico em uma aplicação real.

[
  {
    "payment_method": "magalu_card",
    "total": 5
  },
  {
    "payment_method": "pix",
    "total": 3
  },
  {
    "payment_method": "mastercard",
    "total": 5
  }
]

🎁 O produto

Dado uma lista de itens de um pedido, enriquecer com as informações de gtin (global trade item number). Deve ser retornado também o nome, descrição e identificação do produto.

Nosso endpoint será /orders/enriched. Diferente do que vimos até agora será uma chamada utilizando o verbo POST com o seguinte payload:

{
  "items": [
    "123456789",
    "987654321",
    "444455558"
  ]
}

Cada valor contido no array items será um código que identifica um produto.

O retorno deve ser um JSON com o seguinte formato:

{
  "items": {
    "123456789": {
        "name": "Produto 1",
        "description": "Descrição do produto 1",
        "gtin": "7890000000000"
    },
    "987654321": {
        "name": "Produto 2",
        "description": "Descrição do produto 2",
        "gtin": "7890000000001"
    }
  },
  "missing": [
    "444455558"
  ]
}

Caso algum produto não seja encontrado, deve ser adicionado a chave "missing".

Para a realização deste desafio durante o tutorial, um caminho de acesso a api será disponibilizado, porém caso esteja acompanhando este tutorial posteriormente, uma cópia da api está disponível aqui.

🏁 Concluindo (ou quase)

Assim finalizamos a primeira parte do guia, espero que tenha curtido bastante esta jornada de aprendizado. Daqui pra frente vamos ver técnicas complementares para melhorar a qualidade e robustez do nosso sistema.

Ainda temos várias coisas não abordadas neste guia que complementam nossa aplicação, mas que tornariam a didática pior ou seriam muito extensas. Recomendo que vejam até o final as referências e continuem se aperfeiçoando.

Caso tenham gostado, não deixe de estrelar o repositório como forma de gratidão. Isto motiva a escrever mais materiais interessantes como este em português.

🐂 Uma api robusta possui as funcionalidades esperadas.

Processos assíncronos ➡️

⬅️ Integração contínua

↩️ Voltar ao README