etc.
006 / 스파르타코딩클럽 왕초보 웹개발 4주차 일지 (Flask, API, 모두의 책리뷰)
zubetcha
2021. 10. 22. 18:24
01. Flask
1. Flask 기초
- Flask 프레임워크는 서버를 구동시켜 주는 편한 코드 모음. 서버를 구동하기 위해 필요한 복잡한 일들을 가져다 사용할 수 있음
📌 통상적으로 flask 서버를 돌리는 파일의 이름은 app.py 라고 짓는다.
- Flask 시작 코드
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)
- Flask 폴더 구조: (Python) app.py, (Directory) static, (Directory) templates > (HTML) index.html
2. API - GET, POST 방식
GET 방식
- 통상적으로 데이터 조회(Read)를 요청할 때 ex) 영화 목록 조회
- 데이터 전달: URL 뒤에 물음표를 붙여 key=value 로 전달 ex) google.com?q=북극곰
- 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 방식
- 통상적으로 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청할 때 ex) 회원가입, 회원 탈퇴, 비밀번호 수정
- 데이터 전달: 바로 보이지 않는 HTML Body에 key:value 로 전달
- 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)
}
})
3. API 만들고 사용하는 순서
-
- 클라이언트와 서버 확인하기
- 서버부터 만들기
- 클라이언트 만들기
- 완성 확인하기
02. 모두의 북리뷰
- Flask API 전체 코드
-
from flask import Flask, render_template, jsonify, request app = Flask(__name__) from pymongo import MongoClient client = MongoClient('localhost', 27017) db = client.dbsparta ## HTML을 주는 부분 @app.route('/') def home(): return render_template('index.html') ## API 역할을 하는 부분 @app.route('/review', methods=['POST']) def write_review(): title_receive = request.form['title_give'] author_receive = request.form['author_give'] review_receive = request.form['review_give'] doc = { 'title':title_receive, 'author':author_receive, 'review':review_receive } db.bookreview.insert_one(doc) return jsonify({'msg': '저장 완료!'}) @app.route('/review', methods=['GET']) def read_reviews(): reviews = list(db.bookreview.find({}, {'_id': False})) return jsonify({'all_reviews':reviews}) if __name__ == '__main__': app.run('0.0.0.0', port=5000, debug=True)
- templates > index.html 전체 코드
읽은 책에 대해 말씀해주세요.
다른 사람을 위해 리뷰를 남겨주세요! 다 같이 좋은 책을 읽는다면 다 함께 행복해질 수 있지 않을까요?
제목저자리뷰제목 저자 리뷰
03. 4주차 숙제
- 페이지 구현 화면
- app.py
-
from flask import Flask, render_template, jsonify, request app = Flask(__name__) from pymongo import MongoClient client = MongoClient('localhost', 27017) db = client.dbsparta ## HTML을 주는 부분 @app.route('/') def home(): return render_template('index.html') @app.route('/order', methods=['POST']) def order_post(): name_receive = request.form['name_give'] qty_receive = request.form['qty_give'] address_receive = request.form['address_give'] cp_receive = request.form['cp_give'] doc = { 'name':name_receive, 'qty':qty_receive, 'address':address_receive, 'cp':cp_receive } db.orders.insert_one(doc) return jsonify({'result':'success', 'msg': '주문이 완료되었습니다!'}) @app.route('/order', methods=['GET']) def order_get(): orders = list(db.orders.find({}, {'_id': False})) return jsonify({'all_orders':orders}) if __name__ == '__main__': app.run('0.0.0.0', port=5000, debug=True)
- index.html 코드
양초를 팝니다 가격: 3,000원/개
이 양초는 사실 특별한 히을 가지고 있어요. 양초를 키고 소원을 빌면 짜자잔 뭐든지 이뤄지게 된답니다. 하나 사가세요! 대나무 향이 아주 좋아요!
주문자 이름주소전화번호이름 수량 주소 전화번호