Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problemas na API #94

Open
filipealvess opened this issue Nov 5, 2022 · 8 comments
Open

Problemas na API #94

filipealvess opened this issue Nov 5, 2022 · 8 comments
Labels
bug Something isn't working question Further information is requested refactor

Comments

@filipealvess
Copy link
Collaborator

@felipealencar @JoaoViniciusLima @lopesmayk

Tô preocupado com algumas coisas na API...

Imagino que, se a gente seguir implementando novas funcionalidades, vamos acabar tendo um retrabalho insuportável num futuro breve pra corrigir os diversos problemas que temos e que provavelmente o código atual vai causar.

Queria expor aqui alguns pontos que vejo como "problemas". Não é uma batida de martelo, é uma abertura de discussão, então peço que mostrem vossas opiniões pra gente ter uma discussão bacana que possa fazer nossa plataforma evoluir ✌🏻🙃

Vou separar em "melhorias gerais", que servem pra várias rotas ou partes da API, e alguns pontos específicos de algumas funcionalidades:

@filipealvess filipealvess added bug Something isn't working question Further information is requested refactor labels Nov 5, 2022
@filipealvess
Copy link
Collaborator Author

Melhorias gerais:

  • Utilizar um middleware para verificação dos parâmetros obrigatórios
  • Separar agendamentos de zonas de irrigação (rotas e controlador)
  • Descrever as mensagens de feedback de forma mais específica
  • Utilizar o estado 500 no retorno final (no except) dos métodos (alguns estão retornando 400)
  • Separar comunicação MQTT de HTTP

@filipealvess
Copy link
Collaborator Author

filipealvess commented Nov 5, 2022

Cadastro de culturas

  • Utilizar apenas JSON, eliminando o uso de form data
  • Retornar imagem da cultura
  • Informar coordenadas como array, não como string

Exclusão de culturas

  • Alterar rota para DELETE /cultures/<id>
  • ID da cultura deve ser passado na rota, não no corpo da requisição
  • Excluir também todos os sensores e leituras pertencentes à cultura

@filipealvess
Copy link
Collaborator Author

Atualização de zonas de irrigação

  • Alterar rota para PATCH /irrigation-zones/<id>
  • ID da zona deve ser passado na rota, não no corpo da requisição
  • O retorno deve conter os dados atualizados, não apenas o ID e a mensagem
  • Não pode receber o ID do usuário, senão ele pode ser atualizado, causando problemas nos relacionamentos das entidades

Exclusão de zonas de irrigação

  • Alterar rota para DELETE /irrigation-zones/<id>
  • ID da zona deve ser passado na rota, não no corpo da requisição
  • Excluir também todos os sensores e leituras pertencentes às culturas que estão na zona a ser excluída

@filipealvess
Copy link
Collaborator Author

Atualização de agendamentos

  • Alterar rota para PATCH /schedules/<id>
  • ID do agendamento deve ser passado na rota, não no corpo da requisição
  • O retorno deve conter os dados atualizados, não apenas o ID e a mensagem
  • Não pode receber o ID da zona, senão ele pode ser atualizado, causando problemas nos relacionamentos das entidades

@filipealvess
Copy link
Collaborator Author

Acionamento manual de irrigação (toggle_irrigation)

  • O método deveria ser PATCH, não GET, já que a rota realiza uma alteração parcial dos recursos
  • Deve-se exigir o token, já que é uma ação de grande impacto

@lopesmayk
Copy link
Contributor

Podemos marcar uma call para segunda ou terça feira se vcs concordarem @filipealvess @JoaoViniciusLima

@felipealencar
Copy link
Member

Acionamento manual de irrigação (toggle_irrigation)

  • O método deveria ser PATCH, não GET, já que a rota realiza uma alteração parcial dos recursos
  • Deve-se exigir o token, já que é uma ação de grande impacto

Só lembrando que o toggle_irrigation surgiu naquela semana de deadline de apresentação do projeto funcional. E o toggle_irrigation por vezes pode ser chamado direto pelo sistema do circuito, que talvez não tenha implementação de todos os verbos HTTP.

@filipealvess
Copy link
Collaborator Author

Tô ligado, @felipealencar... como dizem: "feito é melhor que perfeito" 😄

Mas, agora com mais tempo, acho que a gente precisa pensar um pouco mais sobre essa funcionalidade...

Talvez, dependendo do propósito e das regras de negócio, dê pra gente colocar isso na divisão dos protocolos que eu mencionei:

Separar comunicação MQTT de HTTP

Enfim, vamos vendo isso aos poucos ✌🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working question Further information is requested refactor
Projects
None yet
Development

No branches or pull requests

3 participants