앱개발
<배운내용>
1. 앱과 서버
앱에 모든 데이터를 담을 순 없습니다.
1) 앱 용량이 커질 수도 있고
2) 앱 개발자가 새로운 데이터를 사용자에게 제공하려면, 새로운 데이터를 담아 다시 배포해야 겠죠?
그래서 데이터가 담긴 곳, 즉 서버라 부를 곳을 배우고 앱에서 서버의 데이터를 가져오고 변경하는 방법에 대해 배웁니다.
2. 서버리스
서버를 만드는 일은 쉬운일이 아닙니다.
이 서버를 대신 만들어놓고 필요한 기능,
1) 데이터 생성
2) 데이터 조회
3) 데이터 삭제/수정 등을 제공해주는 서비스들이 존재합니다.
이를 서버리스라고 부르기도 하는데요! 이에 대해 배웁니다
3. 파이어베이스
👉 파이어베이스는 구글에서 만든 서버리스 서비스입니다.
서버에 대한 지식이 그렇게 깊지 않아도 서버적인 기능들을 사용할 수 있게끔 도와주는 서비스입니다.
👉 한 서비스를 만드는데 충분한 많은 서버적 기능들을 제공해줍니다.
우리가 필요한 데이터베이스, 이미지 파일 서버는 물론 여러분들이 지금은 몰라도 되는 푸시 알람 기능, 로그인 인증 기능 등등 아주 다양한 기능들이 준비되어 있습니다
우린 여기서 데이터베이스, 이미지 파일 서버를 사용할 예정입니다
가장먼저 사용하게 되는 파이어베이스 서비스는 파일 스토리지입니다. 간단히 파일 저장소라고 여기면 충분합니다. 멀리 있는 파일 저장소에 이미지 및 사용 할 파일을 올려두고, 필요할 때마다 꺼내 쓰는 용도로 사용하면 됩니다.
- 리얼타임 데이터베이스 소개이 서비스를 사용 할 땐, 파이어베이스에서 제공해주는 함수들을 이용하기만 하면 데이터 저장/수정/삭제가 가능합니다.<aside> 👉 이름이 리얼타임 데이터베이스인 이유는, 플랫폼과 실시간 데이터 주고 받는 것에 특화되어 있어서 그런데요! 우린 그런 기능까진 필요없으니 이름이 가진 의미정도만 알고 가자구요!<aside> ❓ 그럼 언제 파일 저장소 스토리지를 쓰고, 언제 리얼타임 데이터베이스를 사용하나요?</aside>
- 이미지 저장 → 파일 저장소 스토리지 JSON 데이터 → 리얼 타임 데이터베이스
- 👉 우리가 배운 리스트, 딕셔너리 구조, 즉 JSON 형태로 저장/관리되는 데이터베이스 서비스 입니다.
<소감>
- 이론이 아니라 실제 작업이 주로 이루어진 주차였다.
- 강의에서 강사님이 말씀하시는 대로 하면 쉽게 서버리스 기능을 이용할 수 있다.
- 두 가지 강의를 한 번에 듣다보니 본의 아니게 비교가 되는데...
- 입문이 어렵지만 앱 개발이 마지막 주차로 갈 수록 수월해진다는 느낌을 받는다.
웹개발
<배운내용>
1. Flask 기초
1) 기본 실행
-
- Flask 프레임워크: 서버를 구동시켜주는 편한 코드 모음. 서버를 구동하려면 필요한 복잡한 일들을 쉽게 가져다 쓸 수 있습니다.
- 👉 프레임워크를 쓰지 않으면 태양초를 빻아서 고추장을 만드는 격! 프레임워크는 3분 요리/소스 세트라고 생각하면 되겠습니다!
- app.py 파일을 만들어 아래 코드를 붙여넣어봅니다.
- 👉 파일 이름은 아무렇게나 해도 상관없지만, 통상적으로 flask 서버를 돌리는 파일은 app.py라고 이름 짓습니다!
2) 기본 폴더구조 - 항상 이렇게 세팅하고 시작!
- Flask 서버를 만들 때, 항상, 프로젝트 폴더 안에,
- ㄴstatic 폴더 (이미지, css파일을 넣어둡니다)
- ㄴtemplates 폴더 (html파일을 넣어둡니다)
- ㄴapp.py 파일 이렇게 세 개를 만들어두고 시작하세요.
- 이제 각 폴더의 역할을 알아봅시다! (꼭 참고!! venv는 실제로는 보이지만, 안보인다~라고 생각하세요! 기억하시죠?)
3) html 파일 불러오기
- flask 내장함수 render_template를 이용합니다. 바로 이게 프레임워크의 위력!
- from flask import Flask, render_template
app = Flask(__name__)
## URL 별로 함수명이 같거나,
## route('/') 등의 주소가 같으면 안됩니다.
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
2. API 만들기
- 👉 리마인드! 은행의 창구가 API와 같다는 것을 기억하시나요? ****같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라 처리하는 것이 다른 것처럼,
- 클라이언트가 요청 할 때에도, "방식"이 존재합니다. HTTP 라는 통신 규약을 따른다는 거 잊지 않으셨죠? 클라이언트는 요청할 때 HTTP request method(요청 메소드)를 통해, 어떤 요청 종류인지 응답하는 서버 쪽에 정보를 알려주는 거에요.
- 👉 GET, POST 방식
- GET → 통상적으로! 데이터 조회(Read)를 요청할 때 예) 영화 목록 조회 → 데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달 → 예: google.com?q=북극곰
- POST → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때 / 예) 회원가입, 회원탈퇴, 비밀번호 수정 → 데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달
- jquery 임포트
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
- GET요청 API코드
@app.route('/test', methods=['GET'])
def test_get():
title_receive = request.args.get('title_give')
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
- GET 요청확인 ajax 코드
$.ajax({
type: "GET",
url: "/test?title_give=봄날은간다",
data: {},
success: function(response){
console.log(response)
}
})
- POST 요청 API코드
@app.route('/test', methods=['POST'])
def test_post():
title_receive = request.form['title_give']
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
- POST 요청확인 ajax 코드
$.ajax({
type: "POST",
url: "/test",
data: { title_give:'봄날은간다' },
success: function(response){
console.log(response)
}
})
<소감>
- 웹과 앱이 흐름은 비슷한데 웹은 백엔드 언어로 파이썬을 배워서 더 어렵다고 느끼는 것 같다.
- 복습을 다시 해봐야 겠다는 생각이 좀 들었다.
- 끝까지 포기하지 말고 마무리를 잘 하는 것이 목표!