Data de elaboração |
05/12/2022 |
Responsável pelo estudo |
Nara Carolina Galvão Feitosa Raissa de Sousa Stodulski Taillon Miguel Gonçalves Ádelle Camarão Monteiro |
Equipe do estudo |
Tambakiss |
Alvo |
Gov.Doc API |
Origem |
Implementação para facilitar novas e atuais integrações ao seguir o padrão RESTful |
Objetivo |
Com a padronização, facilitar a manutentação da API além de que deve facilitar novas integrações. |
Documentação correlata |
-/- |
Observações |
-/- |
Para facilitar novas integrações e manutenção do Gov.Doc API, propõem-se aplicar o padrão RESTful, pois é um padrão utilizado em todo o mundo, independente das tecnologias utilizadas (tipo linguagem de programação, framework etc). Assim sendo, analisou-se o código da aplicação, identificou-se as alterações necessárias e os impactos e levantou-se as demandas necessárias para atender ao objetivo de facilitar a implementação de novas integrações e manutenção da API.
- [Storia] Eu, como SETIC, preciso criar middleware para tratamento de erro.
- Por quê? Para padronizar o retorno dos endpoints quando houver um erro não esperado.
- Regras: Aplicar a controller Modelos para servir de exemplo.
- [Storia] Eu, como SETIC, preciso implementar o middleware na controller BlocoDeAssinatura
- [Storia] Eu, como SETIC, preciso implementar o middleware na controller Documentos
- [Storia] Eu, como SETIC, preciso criar o BaseService para tratamento de validações
- Por quê? Para padronizar o retorno dos endpoints quando cair em alguma regra/validação.
- Regras: Aplicar a controller Modelos para servir de exemplo.
- [Storia] Eu, como SETIC, preciso implementar o BaseService no service do BlocoDeAssinatura
- [Storia] Eu, como SETIC, preciso implementar o BaseService no service do Documentos
- [Storia] Eu, como SETIC, preciso padronizar o retorno de 200-Success de todos os endpoints da controller Modelos
- Por quê? Pois deve seguir o padrão RESTful.
-
Regras:
- Deve retornar o objeto criado/alterado/consultado (quando é GET/POST/PUT/PATCH) ou uma mensagem de bem-sucedido (para os outros como DELETE/PATCH).
- Renomear viewModel para dto.
- [Storia] Eu, como SETIC, preciso padronizar o retorno de 200-Success de todos os endpoints da controller BlocoDeAssinatura
- Por quê? Por quê? Pois deve seguir o padrão RESTful.
-
Regras:
- Deve retornar o objeto criado/alterado/consultado (quando é GET/POST/PUT/PATCH) ou uma mensagem de bem-sucedido (para os outros como DELETE/PATCH).
- Renomear viewModel para dto.
- [Storia] Eu, como SETIC, preciso padronizar o retorno de 200-Success de todos os endpoints da controller Documentos
- Por quê? Pois deve seguir o padrão RESTful.
-
Regras:
- Deve retornar o objeto criado/alterado/consultado (quando é GET/POST/PUT/PATCH) ou uma mensagem de bem-sucedido (para os outros como DELETE/PATCH).
- Renomear viewModel para dto.
- [Storia] Eu, como SETIC, preciso renomear controller BlocoDeAssinatura para BlocosDeAssinatura.
- Por quê? Pois o padrão é a controller estar no plural.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Consultar da controller BlocoDeAssinatura.
- [Task]Renomear método para Buscar.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Criar da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint BlocosDeAssinatura/Criar para BlocosDeAssinatura
- [Task]Remover campo BlocoId do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Editar da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura para BlocosDeAssinatura/{id}
- [Task]Remover campo BlocoId do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método AdicionarDocumento da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/AdicionarDocumento para BlocosDeAssinatura/{id}/AdicionarDocumento
- [Task]Remover campo BlocoId do body
- [Task]Alterar método HTTP para PATCH
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método RemoverDocumento da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/RemoverDocumento para BlocosDeAssinatura/{id}/RemoverDocumento
- [Task]Remover campo BlocoId do body
- [Task]Alterar método HTTP para PATCH
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método DisponibilizarParaAssinatura da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/DisponibilizarParaAssinatura para BlocosDeAssinatura/{id}/Disponibilizar
- [Task]Remover campo IdDoBloco do body
- [Task]Alterar método HTTP para PATCH
- [Task]Renomear método para Disponibilizar
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Assinar da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/Assinar para BlocosDeAssinatura/{id}/Assinar
- [Task]Remover campo IdDoBloco do body
- [Task]Alterar método HTTP para PATCH
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Excluir da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/Excluir para BlocosDeAssinatura/{id}
- [Task]Remover campo IdDoBloco do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Cancelar da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/Cancelar para BlocosDeAssinatura/{id}/Cancelar
- [Task]Remover campo IdDoBloco do body
- [Task]Alterar método HTTP para PATCH
- BlocosDeAssinatura/Cpf/{cpf}
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método CriarPorSistema da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/CriarPorSistema para BlocosDeAssinaturaPorSistema
- [Task]Remover campo BlocoId do body
- [Task]Renomear método para Criar
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método AdicionarDocumentoPorSistema da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/AdicionarDocumentoPorSistema para BlocosDeAssinaturaPorSistema/{id}/AdicionarDocumento
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo BlocoId do body
- [Task]Renomear método para AdicionarDocumento
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método RemoverDocumentoPorSistema da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/RemoverDocumentoPorSistema para BlocosDeAssinaturaPorSistema/{id}/RemoverDocumento
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo BlocoId do body
- [Task]Renomear método para RemoverDocumento
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Excluir da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/ExcluirPorSistema para BlocosDeAssinaturaPorSistema/{id}
- [Task]Remover campo BlocoId do body
- [Task]Renomear método para Excluir
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Cancelar da controller BlocoDeAssinatura
- [Task]Alterar rota do endpoint para pegar o BlocosDeAssinatura/CancelarPorSistema para BlocosDeAssinaturaPorSistema/{id}/Cancelar
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo IdDoBloco do body
- [Task]Renomear método para Cancelar
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método GetDocumento da controller Documentos
- [Task]Renomear método para Buscar.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método ConsultarHistorico da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Historico/{id} para Documentos/{id}/Historico
- [Task]Renomear método para BuscarHistorico.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método PostDocumento da controller Documentos
- [Task]Renomear método para Criar.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método PostDocumentoUsuarioExterno da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/PostDocumentoUsuarioExterno para Documentos/UsuarioExterno
- [Task]Renomear método para Criar.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método PutDocumento da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos para Documentos/{id}
- [Task]Remover campo Id do body
- [Task]Renomear método para Editar
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Compartilhar da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Compartilhar para Documentos/{id}/Compartilhar
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo IdDocumento do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Arquivar da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Arquivar para Documentos/{id}/Arquivar
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo Id do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Assinar da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Assinar para Documentos/{id}/Assinar
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo IdDocumento do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Revogar da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Revogar para Documentos/{id}/Revogar
- [Task]Alterar método HTTP para PATH
- [Task]Remover campo IdDocumento do body
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método VerificarAutenticidade da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Autenticidade para Documentos/{id}/Autenticidade
- [Task]Alterar método HTTP para GET
- [Task]Renomear método para Autenticar
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método BuscarPorCpf da controller Documentos
- [Task]Criar novo filtro [FromQuery] SomenteArquivados: bool?
- [Task]Aplicar filtro SomenteArquivados, igual o método BuscarArquivadoPorCpf pois ele será deletado.
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método BuscarPorCpf da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/Numeracao?numeracao={numeração} para Documentos?numeracao={numeração}
- Documentos/Arquivado/Cpf/{cpf}
- [Storia] Eu, como SETIC, preciso aplicar padrão RESTful no método Compartilhar da controller Documentos
- [Task]Alterar rota do endpoint para pegar o Documentos/CompartilharPorSistema para DocumentosPorSistema/{id}/Compartilhar
- [Task]Alterar método HTTP para PATCH
- [Task]Remover campo IdDocumento do body
- [Task]Renomear método para Compartilhar
Há ainda novas actions e controllers a serem criadas.
Concluímos que essas alterações necessárias para aplicar o padrão RESTful. O projeto ainda é passível de outras melhorias na arquitetura, nomenclatura de classes, métodos e variáveis, melhorias nos testes unitários e nos testes de integração.