Flask 프레임워크 : 서버 구동 시켜주는 편한 코드모음
@app.route('/) 부분을 수정하여 URL을 나눌 수 있습니다!
** url 별로 함수명이 같거나, route('/')내의 주소가 같으면 안됩니다.
from flask import Flask
app = Flask(__name__)
# URL 별로 함수명이 같거나,
# route('/')등의 주소가 같으면 안된다.
@app.route('/')
def home():
return 'This is Home!'
@app.route('/mypage')
def mypage():
return 'This is My Page!' # return render_template('index.html') 하면 index.html불러옴
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)
** Flask 서버 만들 때
프로젝트 폴더 관리방법
프로젝트폴더
↳ static 폴더(css, 이미지 파일 보관용)
↳ templates 폴더 (html파일 보관용)
↳ app.py 파일
GET, POST 방식
* GET → 통상적으로 데이터 조회(Read)를 요청할 때
예) 영화 목록 조회
→ 데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달
→ 예) google.com?q=북극곡
* POST → 통상적으로 데이터 생성(Create), 변경(Update), 삭제(Delete)요청 할 때
예) 회원가입, 회원탈퇴, 비밀번호 수정
→ 데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달
GET 요청 API코드 ( python파일 안에서)
@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코드 (HTML head 안에 javascript부분)
$.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)
}
})
응용해보기
GET 연습
서버 코드 - app.py
@app.route('/review', methods=['GET'])
def read_reviews():
sample_receive = request.args.get('sample_give')
print(sample_receive)
return jsonify({'msg': '이 요청은 GET!'})
클라이언트 코드 - index.html (app.py 파일 '/review' 와 'GET' , 'msg' 부분의 매칭되는 부분을 확인한다.
function showReview() {
// 서버의 데이터를 받아오기
$.ajax({
type: "GET",
url: "/review?sample_give=샘플데이터",
data: {},
success: function (response) {
alert(response["msg"]);
}
})
}
A. 요청 정보
- 요청 URL= /review , 요청 방식 = GET
- 요청 데이터 : 없음
B. 서버가 제공할 기능 : 데이터베이스에 리뷰 정보를 조회(Read)하고, 성공 메시지와 리뷰 정보를 응답 데이터를 보냄
C. 응답 데이터 : (JSON 형식) 'all_reviews'= 리뷰리스트
@app.route('/review', methods=['GET'])
def read_reviews():
# 1. DB에서 리뷰 정보 모두 가져오기
reviews = list(db.bookreview.find({}, {'_id': False}))
# 2. 성공 여부 & 리뷰 목록 반환하기
return jsonify({'all_reviews': reviews})
클라이언트 만들기
A. 요청 정보
- 요청 URL= /review , 요청 방식 = GET
- 요청 데이터 : 없음
B. 서버가 제공할 기능 : 데이터베이스에 리뷰 정보를 조회(Read)하고, 성공 메시지와 리뷰 정보를 응답 데이터를 보냄
C. 응답 데이터 : (JSON 형식) 'all_reviews'= 리뷰리스트
function showReview() {
$.ajax({
type: "GET",
url: "/review",
data: {},
success: function (response) {
let reviews = response['all_reviews']
for (let i = 0; i < reviews.length; i++) {
let title = reviews[i]['title']
let author = reviews[i]['author']
let review = reviews[i]['review']
let temp_html = `<tr>
<td>${title}</td>
<td>${author}</td>
<td>${review}</td>
</tr>`
$('#reviews-box').append(temp_html)
}
}
})
}
'공부 > sparta' 카테고리의 다른 글
프로젝트 진행 1주차 (0) | 2021.10.21 |
---|---|
프로젝트 기획안 (0) | 2021.10.14 |
3주차 수업내용 정리 (0) | 2021.09.28 |
2주차 수업내용 정리 (0) | 2021.09.22 |
1주차 수업내용 정리 (0) | 2021.09.21 |
댓글