on
[스파르타코딩클럽] 웹개발 4주차 flask서버, api설계
[스파르타코딩클럽] 웹개발 4주차 flask서버, api설계
해당 강의에서는 내 컴퓨터에 서버도 만들고, 요청도 하고... 즉 클라이언트 = 서버이기 때문에 -> 이를 바로 "로컬 개발환경"이라 한다.
1. Flask 시작하기 - 서버만들기
1) Flask 패키지 설치하고 시작
*패키지 설치 화면 진입하기
윈도우 : 좌상단File → setting → Python interpreter
맥 : 좌상단Pycharm → Preference → Python Interpreter
python interpreter 화면에서 + 버튼을 누르면 아래 창이 뜬다!
flask 로 검색한 후, Install package 클릭
2) Flask 기초 : 기본 실행
-Flask 프레임워크 : 서버를 구동시켜주는 편한 코드 모음. 서버를 구동하려면 필요한 복잡한 일들을 쉽게 가져다 쓸 수 있다. (프레임워크는 3분요리/소스 세트라고 생각하면 된다고 한다!)
-app.py 파일을 만들어 아래 코드를 붙여넣어봅니다.
: 파일 이름은 아무렇게나 해도 상관없지만 통상적으로 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)
시작 코드를 붙여넣고, 화면 아무데나 우클릭하고 'Run app'을 클릭했을 때, 터미널에 아래와 같은 메시지가 뜨면 실행 성공이다.
위의 터미널에서 파랗게 표시된 링크를 클릭하면 크롬으로 접속된다!
그럼 This is Home! 이라는 글씨가 크롬 화면의 좌측상단에 뜰 것이다.
*종료하는 방법: 위 이미지에 해당하는 터미널 창을 클릭하고, ctrl + C를 누르면 서버가 종료된다.
3) Flask 기초 : URL 나눠보기
@app.route('/') 부분을 수정해서 URL을 나눌 수 있다.
url별로 함수명이 같거나, route('/')내의 주소가 같으면 안된다.
예시:
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'This is Home!' @app.route('/mypage') def mypage(): return 'This is My Page!' if __name__ == '__main__': app.run('0.0.0.0',port=5000,debug=True)
2. Flask 시작하기 - HTML 파일 주기
1) Flask 기초 : 기본 폴더구조 - 항상 이렇게 세팅하고 시작!
Flask 서버를 만들 때 항상,
프로젝트 폴더 안에,
ㄴstatic 폴더 (이미지, css파일을 넣어둡니다)
ㄴtemplates 폴더 (html파일을 넣어둡니다)
ㄴapp.py 파일
이렇게 세 개를 만들어두고 시작하자.
3. Flask 기초 : HTML 파일 불러오기
1) 간단한 index.html 파일을 templates 안에 만들기
[스파르타코딩클럽] 웹개발 종합반 - 4주차 6 Document 서버를 만들었다!
2) 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)
4. Flask 시작하기 - 본격 API 만들기
- GET 요청 API코드(app.py)
- GET 요청 확인 Ajax코드(index.html)
- POST 요청 API코드(app.py)
- POST 요청 확인 Ajax코드(index.html)
5. [모두의책리뷰] 서버 만들기 (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') ## 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)
6. [모두의책리뷰] 클라이언트 만들기 (index.html 코드)
모두의 책리뷰 | 스파르타코딩클럽 $(document).ready(function () { $("#reviews-box").html(""); showReview(); }); function makeReview() { let title = $('#title').val() let author = $('#author').val() let review = $('#bookReview').val() $.ajax({ type: "POST", url: "/review", data: {title_give:title, author_give:author, review_give:review}, success: function (response) { alert(response["msg"]); window.location.reload(); } }) } 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 = `
from http://morethanbig.tistory.com/25 by ccl(A) rewrite - 2021-06-25 15:00:37