/python-e7-kadastramento

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

Table of Contents

E7 - Kadastramento

Para essa entrega, você criará um sistema que permitirá o cadastramento e a manutenção de um usuário em uma plataforma.

Objetivo

Essa atividade foi elaborada para trabalhar seus conhecimentos de manipulação de arquivos CSV em uma aplicação em Flask.

Preparativos

Você deverá criar um arquivo chamado users.csv, que utilizará para guardar os registros de usuários. Você precisará retornar status em suas requisições, então como sugestão, utilize o HTTP modules do Python para retornar os status corretamente! Centralize sua lógica de rotas em um arquivo chamado app.py

Ex 1: A rota de registro deve seguir o seguinte formato:

  • URI: /signup
  • Assinatura da função: signup()

Ex 2: A rota de login deve seguir o seguinte formato:

  • URI: /login
  • Assinatura da função: login()

Ex 3: A rota de update deve seguir o seguinte formato:

  • URI: /profile/int:user\_id
  • Assinatura da função: update_user(user_id)

Ex 4: A rota de delete deve seguir o seguinte formato:

  • URI: /profile/int:user\_id
  • Assinatura da função: delete_user(user_id)

Ex 5: A rota de get dos usuários deve seguir o seguinte formato:

  • URI: /users
  • Assinatura da função: all_users()

-----

Entradas e saídas

Exercício 1

Input 1 - Requisição POST para /signup.

IMPORTANTE: Você deve verificar se já existe um usuário com o mesmo email dentro da sua base de dados, caso exista, deve retornar status 422 - Unprocessable Entity e um JSON vazio.

# Body da requisição

{

"name": "Naruto Uzumaki",

"email": "naruto@konoha.com",

"password": "imgoingtobeahokage123",

"age": 19

}

Output 1 - Resposta do servidor

{

"id": "1",

"name": "Naruto Uzumaki",

"email": "naruto@konoha.com",

"age": 19

}

Exercício 2

Input 2 - Requisição POST para /login

# Body da requisição

{

"email": "naruto@konoha.com",

"password": "imgoingtobeahokage123"

}

Output 2 - Resposta do servidor

{

"id": "1",

"name": "Naruto Uzumaki",

"email": "naruto@konoha.com",

"age": 19

}

Exercício 3

Input 3 - Requisição PATCH para /profile/int:user\_id

# Body da requisição

{

"age": 21

}

Output 3 - Resposta do servidor

{

"id": "1",

"name": "Naruto Uzumaki",

"email": "naruto@konoha.com",

"age": 21

}

Exercício 4

Input 4 - Requisição DELETE para /profile/int:user\_id

# Body da requisição

NO CONTENT

Output 4 - Resposta do servidor

// STATUS 204 - NO CONTENT

Exercício 5

Input 5 - Requisição GET para /users

# Body da requisição

NO CONTENT

Output 5 - Resposta do servidor

[

{

"id": "1",

"name": "Naruto Uzumaki",

"email": "naruto@konoha.com",

"age": 21

},

{

"id": "2",

"name": "Cygnus Hyoga",

"email": "hyoga@cdz.com",

"age": 14

}

]


Entregáveis

Repositório

  • Link do repositório do GitLab
  • Código fonte:
    • arquivo app.py.
  • Privacidade
    • Incluir ka-br-out-2020-correcoes como reporter.

Critérios de aceitação

pts Dado Quando É esperado
1

Rota /signup

funcionando corretamente

POST realizado para rota /signup Seja criado um novo usuário caso ele não exista, caso contrário, retorne um JSON vazio com status 422
1

Rota /login

funcionando corretamente

POST realizado para rota /login Retorne um JSON com as informações do usuário, se o email ou senha estiverem inválidos, deve retornar uma resposta de erro
 1

Rota /profile/int:user\_id

funcionando corretamente

PATCH realizado para /profile/int:user\_id Retorne um JSON com as informações do usuário atualizados e status 200
1

Rota /profile/int:user\_id

funcionando corretamente

DELETE realizado para /profile/int:user\_id Retorne um status 204 - NO CONTENT
1

Rota /users

funcionando corretamente

GET realizado para /users Retorne um JSON com a lista de usuários registrados e o status 200 - OK

Boa diversão, devs! 🚀👨‍💻👩‍💻🚀