Step-by-Step

[Spring] 11. Android - Spring - DB - Python 데이터 주고받기 본문

프로젝트/Eggo (Mobile App)

[Spring] 11. Android - Spring - DB - Python 데이터 주고받기

희주(KHJ) 2022. 5. 21. 23:23

안드로이드에서 Spring으로 데이터를 담아 요청이 오면 DB에 데이터를 담아주고,

Python에서 읽어와 DB에 담아주면 Spring에서 DB에서 값을 읽어서 안드로이드로 넘겨준다

 

말로는 어려우니 그림으로 그려봤다

아무도 안보겠지만 발그림 죄송합니다..

 

참고로 Spring과 DB는 내 컴퓨터에서 작업하는건데, 외부에서 접근할 수 있도록 미리 권한을 설정해주었다

 

 

Spring 컨트롤러

import org.springframework.web.client.RestTemplate;

- RestTemplate을 사용하였다

- RestTemplate : Spring에서 지원하는 객체로 간편하게 REST API 방식으로 호출할 수 있는 Spring 내장 클래스

- JSON, XML 응답을 모두 받을 수 있다

	// Python과 요청 사용
	@GetMapping("/TestConn")
	public @ResponseBody String testPythonConn() {
		System.out.println("test====> /PythonConn");
		
		String url = "http://파이썬IP주소:5000";
		
		//RestTemplate 객체 생성
		RestTemplate template = new RestTemplate();		
		String response = template.getForObject(url+"/getPhoto", String.class);
		System.out.println(response);
		
		response = template.getForObject(url+"/getWeather", String.class);
		System.out.println(response);
		
		return response;
	}

- 레트로핏 써보려고 했는데,, 지원을 너무 잘해준다 ㅋㅋㅋㅋㅋㅋㅋㅋ 코드 간편해서 편안 ㅠㅠ

 

 

파이썬 Controller

from flask import Flask

- Flask를 사용하였다

- Flask : 웹 애플리케이션 개발을 위한 파이썬 프레임워크

app = Flask(__name__)

@app.route('/getPhoto')
def getPhoto():
    return "Photo Scan success"
    
@app.route('/getWeather')
def getWeather():
    return "Fee Predict success"
    
# 모든 host에서 접근 가능 = 0.0.0.0 
if __name__ == '__main__':
    app.run(host='0.0.0.0')

- 기본 주소http://127.0.0.1:5000/이고, 기본 포트번호는 주소에 보이듯이 5000번이다

- @app.route('/경로')를 넣어주면 된다. 기본주소 뒤에 붙을 경로이며, client에서 잘 판단해서 해당 url로 요청하면 된다

- 여기서 app.run() 내부에 debug=True라고 명시하면 해당 파일의 코드를 수정할때마다 Flask가 변경을 감지하고 다시 시작한다

- 나는 테스트할때 Spring이랑 Python을 같은 컴퓨터에서 돌려서 localhost로 접근이 가능했는데,

  다른 컴퓨터에서 접근하기 위해서는 (같은 네트워크를 사용한다는 가정하에) host='0.0.0.0'으로 설정해주고 (or 원하는대로 설정)

  cmd켜서 ipconfig 명령어 입력 후에 IPv4주소를 넣어주면 된다~~~~

 

 

사실 Spring으로 Controller를 구현해봐서 이해하기 수월했다 (고생했떤거 잊음 ㅎ_ㅎ ㅋㅋㅋ)

어차피 그저 데이터베이스에 넣었다는 걸 인지하기 위한 통신용이기 때문에 String으로 받게 하였다

추가 기능을 사용하실 분들은 아래 블로그도 한번 참조해 보시길 바랍니다

 

[참조]

https://hleecaster.com/flask-introduction/

 

Comments