Giter Club home page Giter Club logo

medicarapi-backend's Introduction

Introdução

Tecnologias:

  • Python, como linguagem de programação;

  • Django Framework, como framework de desenvolvimento web para o backend;

  • Django Rest Framework, como biblioteca para o Django Framework para criação de APIs Restful;

  • Django Rest Framework JWT, como biblioteca para o Django Framework para criação de tokens para autenticar um usuário ao fazer o login;

  • Django Environ, como biblioteca para manipular variáveis de ambiente sensíveis à aplicação;

  • PostgreSQL, como SGBD para armazenar, acessar, atualizar e deletar informações no banco de dados;

  • Insomnia, para realizar as requisições HTTP

Configurações

Ambiente Virtual

Ao ter acesso aos arquivos, primeiro deve-se criar o ambiente de desenvolvimento (vitualenv) e instalar todas as dependências, utilizando:

python3 -m venv env
pip install -r requirements.txt

Variáveis de ambiente

Depois de ter todas as dependências instaladas, deve-se acrescentar algumas variáveis de ambiente:

  • Primeiro deve-se criar um arquivo '.env' na pasta medicarAPI, ou seja, na mesma pasta do arquivo settings.py
  • No arquivo '.env' colocar as seguintes variáveis:
SECRET_KEY=89o4$wv3g)y)w1ym81wfgt7b@7twpq3!&o^kef7)o9-itpqu%e
DB_NAME='nome do banco criado'
DB_USER='nome do usuário do banco'
DB_PASSWORD='senha do banco'
DB_HOST='endereço do banco'
DB_PORT='porta que o banco está rodando'

Migrations

  • Agora deve-se rodar as migrações para o banco ser preenchido com as tabelas necessárias à aplicação:
python manage.py makemigrations
python manage.py migrate

Django Admin

  • Após estas configurações iniciais, o projeto já estará pronto para uso, logo, deve-se criar um super user para o acesso do Django Admin:
python manage.py createsuperuser

Problema

  • Criei 2 Django Apps, a primeira é a 'user', com as informações de cadastro de usuário, e a segunda é a 'core', com as informações médicas;
  • Herdei o model User do Django Framework para a criação de novos usuários, e utilizei uma flag booleana para indicar se é cliente;
  • A modelagem do banco com as lógicas da parte médica estão na app 'core';
  • Com a conta criada, deve-se informar os campos 'username' e 'password' para a rota de autenticação (login) para receber um JWT para conseguir ter acesso às outras rotas da API.

Rotas

Autenticação

  • Registration/Signup
url: localhost:8000/api/auth/cadastrar_cliente/
body: "username", "password", "email", "first_name", "last_name"
  • Login/Authentication
url: localhost:8000/api/token
body: "username", "password"
retorno: JWT

As próximas rotas só poderão ser acessadas passando o token na variável Authorization do header da requisição: 'JWT + token recebido no login'

Rotas

  • Especialidades List (GET)
url: localhost:8000/api/especialidades/
  • Médicos List (GET)
url: localhost:8000/api/medicos/
  • Consultas List (GET)
url: localhost:8000/api/consultas/
  • Consultas Create (POST)
url: localhost:8000/api/consultas/
body: "agenda", "horario"
  • Consultas Delete (DELETE)
url: localhost:8000/api/consultas/"id"
  • Agendas List (GET)
url: localhost:8000/api/agendas/

Testes

  • Os testes de Registration e Authentication estão na app 'user', e os testes de endpoints estão na app 'core';

Considerações Finais

  • Por questões de melhor visualização coloquei um paginator de tamanho 2, que pode ser alterado na variável 'PAGE_SIZE' no arquivo settings.py;
  • Todas as validações e filtragens de endpoints foram implementados.

medicarapi-backend's People

Contributors

joaovictor1205 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.