Como integrar uma aplicação Android com um servidor em Python + DB? – android python cliente-servidor

Pergunta:


Boa tarde a todos! Sou estudante de Ciência da Computação, porém ainda não tive a oportunidade de ter uma experiência mais profunda com programação, envolvendo as integrações necessárias em aplicativos e sistemas, e gostaria muito de ter uma noção por cima do que vou precisar.

De maneira resumida, tenho um projeto no qual pretendo desenvolver um aplicativo Android, o qual atuará quase que somente como front, enviando os dados ao meu servidor em Python, o qual armazenará os mesmos no banco respectivo, realizará algoritmos de Machine Learning sobre esses dados, e retornará isso ao meu aplicativo, trazendo para o front (exibindo na tela). Basicamente será um aplicativo de questões e respostas, como quizzes.

A minha dúvida é: como farei para, através do meu aplicativo, acessar minha aplicação em Python (ou fazer as chamadas), retorná-las e afins? Pois para a integração Python<->DB já analisei algumas possibilidades e provavelmente irei utilizar a lib pymysql, porém não consegui encontrar algo assim para o lado de Android<->Python (por exemplo, o usuário acertou 3 questões, eu envio esse inteiro para a minha aplicação Python e nela são chamadas as funções respectivas para os cálculos).

Li um pouco sobre “web services”, é necessário algo assim para o que eu desejo? Qualquer recomendação de materiais ou sites onde eu possa estudar isso mais a fundo é muito bem vinda!

Agradeço desde já.

Edit 1: Inicialmente, gostaria apenas de criar uma conexão básica, com a boa e velha tela de login, isto é, desejo criar uma autenticação realizada pelo meu server-side (Python + DB). A partir disto, desejo explorar as partes conjuntamente e individualmente.

Solicito, se possível, algum exemplo específico desse procedimento, algo como “Android – ferramenta X – servidor – ferramenta Y – banco de dados”, ou seja, a maneira como isso tudo se conecta, citando ferramentas, para que a partir desse exemplo eu possa procurar ferramentas similares e encontrar a que melhor me atender. Creio que um exemplo gráfico elucidaria muito minhas dúvidas.

Autor da pergunta Lucas Antunes

Resposta :

Sim –
como você já deve ter entendido, sua aplicação Python vai ficar num servidor na nuvem. Vários frameworks para android permitem que você faça uma aplicaão que vai buscar resultados na nuvem por meio de web-services. Frameworks para criação de aplicativos “html5” como o Ionic e o Electron, permitem o uso direto de web-services, assim como a combinação de tecnologias como Angular ou React que permitem outras formas de escrever a aplicação.

Do lado do Python, o que você vai ter é um servidor (pode ser um Virtual Private Server, ou um serviço de hospedagem como o Heroku ou o redhatOpenShift) – nele é configurada uma rota para sua aplicação Python, que via de regra deve responder usando o padrão “WSGI”. Por outro lado, você escreve sua aplicação Python respondendo WSGI, e não tem que se preocupar com as configurações de produção durante o desenvolvimento.

Talvez uma das formas mais simples de se criar um conjunto de webservices em Python seja usando o framework Flask – embora qualquer dos framworks web mais populares vá servir (Django, Bottle, Web2py, Pyramid): esses frameworks vão conter uma série de utilidades e serviços de forma que você não tenha que re-inventar a roda para zilhões de coisas – como manter a independência entre requests, manter um pool de conexões com o banco de dados,obter e validar dados de formulários ou requisições HTTP, evitam ataques de cross-site-scripting, (XSS), e essa lista poderia crescer bastante.

Aqui tem um blog post que dá o caminho das pedras para fazer com Flask:
https://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask

(como você pode ver, escrever um exemplo funcionando aqui, incluindo as instruções de configuração para desenvolvimento seria o equivalente a um capítulo de livro).

A última recomendação que deixo é não tentar usar o SQL diretamente – você vai ter muito mais flexibilidade e facilidade para criar novos modelos na sua aplicação se usar um ORM -“Object Relational Mapper”. O mais usado para Python é o SQLAlchemy – e é fácil achar instruções de integração do mesmo com todos os frameworks python. A não ser que você opte por usar Django como framework, nesse caso ele usa um ORM próprio que é bem prático também.

Fonte

Related Posts:

Qual a diferença entre AppCompatActivity e Activity? – android android-activity
Pergunta: Qual a diferença da AppCompatActivity para Activity ? A partir de qual versão a AppCompatActivity foi adicionada ao Android? Autor da pergunta Luhhh A diferença reside ...
Como abreviar palavras em PHP? – php string
Pergunta: Possuo informações comuns como nome de pessoas e endereços, e preciso que elas contenham no máximo 30 caracteres sem cortar palavras. Exemplo: 'Avenida Natalino João Brescansin' ...
Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem
Pergunta: Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração. Veja o exemplo: class ...
Boas práticas para URI em API RESTful – api rest restful
Pergunta: Estou com dúvida em relação às URIs de alguns recursos da api que estou desenvolvendo. Tenho os recursos projetos e atividades com relação 1-N, ...
Dúvidas sobre a integração do MySQL com Java – java mysql netbeans
Pergunta: Estou criando um sistema no NetBeans, utilizando a linguagem Java e o banco de dados MySQL. Escrevi o seguinte código para realizar a conexão ...
Qual é a finalidade da pasta Model do framework Inphinit? – php inphinit
Pergunta: No Inphinit micro-framework existe a pasta Model que fica dentro da pasta application, e nela é onde ficam as classes, mas eu estou muito ...
Uso do ‘@’ em variáveis – javascript typescript coffeescript
Pergunta: Vejo em algumas linguagens que compilam para javascript, como TypeScript e CoffeeScript, o uso do @ em variáveis, como também, casos em que o ...
Qual tamanho máximo um arquivo JSON pode ter? – json arquivo
Pergunta: Vou dar um exemplo para conseguir explicar minha duvida: Preciso recuperar informação de imagens vindas de uma API, esse banco de imagens me retorna JSON's ...
O que é Teste de Regressão? – terminologia engenharia-de-software testes
Pergunta: Na matéria de Teste de Software o professor abordou um termo chamado Teste de Regressão, isto dentro da disciplina de teste de software. Sendo ...
O que é um construtor da linguagem? – php característica-linguagem
Pergunta: Em PHP, já li e ouvi várias vezes a respeito dos Construtores da Linguagem. Os casos que sempre ouvi falar deles foi em casos ...
Função intrínseca para converter numérico para string – cobol
Pergunta: Estou a tentar saber se existe alguma função intrínseca do COBOL para converter um data numérico para string sem precisar usar a cláusula REDEFINES: ( ...
Porque usar implements? – java android
Pergunta: Qual a diferença entre usar btn.setOnClickListener(new OnClickListener() { e public class MainActivity extends Activity implements OnClickListener{ Estive fazendo um curso de Android e meu professor falou que ...
O que é XHTML e quando deve ser usado? – html xml xhtml
Pergunta: O que eu sei é que o XHTML precisa ser XML válido. Isso implica, por exemplo, que todas as tags precisam ser fechadas. Por ...
Uma placa aceleradora de vídeo pode melhorar o desempenho não-gráfico? [fechada] – desempenho
Pergunta: Para desenvolver em Ruby on Rails, eu utilizo aqui uma máquina virtual do VirtualBox com Ubuntu Server 14.04 sem interface gráfica instalada. Recentemente descobri uma ...
Concat() VS Union() – c# .net
Pergunta: Qual a diferença entre Concat() e Union() ? Quando usar Concat() e quando usar Union() ? Somente pode ser usado em list ? ...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *