Step-by-Step
[Spring] 11. Android - Spring - DB - Python 데이터 주고받기 본문
[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/
'프로젝트 > Eggo (Mobile App)' 카테고리의 다른 글
[Spring] 13. 프로젝트 구조 변경 (feat. Flask) (0) | 2022.06.21 |
---|---|
[Spring] 12. 스프링 시큐리티 (0) | 2022.06.21 |
[Spring] 10. DB에 이미지 저장 - BLOB (+ Python에서 열기) (0) | 2022.05.21 |
[Spring] 9. 안드로이드 통신 - HttpUrlConnection (0) | 2022.05.21 |
[Spring] 8. 날씨 API 받아오기 (0) | 2022.05.19 |