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)
👉 서버 종료 : 터미널 창을 클릭 - ctrl + c 누르기
👉 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)
👉 Flask 서버를 만들 때 항상 프로젝트 폴더 안에,
아래와 같이 세팅하고 시작한다.
- 폴더 구조
- static 폴더 : 이미지, css파일을 넣어둔다.
- templates 폴더 - html파일을 넣어둔다.
- app.py 파일
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)
****클라이언트가 서버에 요청할 때 REST 를 지키면서 전달하는 방법
클라이언트는 요청시 HTTP request method(요청 메서드)를 통해 어떤 요청 종류인지
응답하는 서버 쪽에 정보를 알려준다.
CRUD 에서 보통 다음의 메서드를 이용한다.
- GET - 조회
- POST - 등록
- PUT - 수정
- DELETE - 삭제
GET
POST
app.py에서 상단코드 마지막에 (render_template 뒤) request, jsonify (모듈)를 입력해준다.
- request : requests는 python사용자들을 위해 만들어진 간단한 Python용 HTTP 라이브러리
간단하게는 HTTP, HTTPS 웹 사이트에 요청하기 위해 자주 사용되는 모듈 중 하나
Crawling 과정에서 request 모듈을 이용해 웹 사이트의 소스코드를 가져온 다음 파싱을
하는 경우가 많다.
- jsonify : json을 쿼리하고 반환 할 API를 빌드 할 때 유용하다.
@app.route('/')
def home():
return render_template('index.html')
# 서버 페이지를 만들고, index.html을 렌더링한다.
@app.route('/test', methods=['GET'])
# /test 창구를 만들고, GET 요청을 받는 것은 이쪽으로 와라.
def test_get():
title_receive = request.args.get('title_give')
# title_give라는 데이터를 받으면 이것을 변수에 저장한다.
print(title_receive)
# title_give에 담겼던 데이터를 터미널에 출력한다.
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
# ( )의 값을 반환한다. ( get으로 요청한 a.jax에게 전달한다.)
HTML에서 jquery import 코드 입력 체크하기.
$.ajax({
type: "GET",
url: "/test?title_give=봄날은간다",
// /test라는 창구에 가는데 title_give라는 이름으로 봄날은 간다라는 데이터를 가져갈게.
data: {},
success: function (response) {
// 창구(API)에서 데이터를 잘가져오면, 받아온 데이터를 콘솔에 찍어볼게
console.log(response)
// {'result':'success', 'msg': '이 요청은 GET!'}
}
})
@app.route('/')
def home():
return render_template('index.html')
# 서버 페이지를 만들고, index.html을 렌더링한다.
@app.route('/test', methods=['POST'])
# /test 창구를 만들고, POST 요청을 받는 것은 이쪽으로 와라.
def test_post():
title_receive = request.form['title_give']
# title_give 갖고왔니? 응 가져왔어 봄날은 간다라고 써있었어. 그러면 그걸 변수에 넣어.
print(title_receive)
# 변수에 넣은 데이터를 터미널에 출력했어.
return jsonify({'result':'success', 'msg': '요청을 잘 받았어요'})
# 나는 위에 처리는 다했고, 다시 이 데이터를 돌려줄거야.
// POST 방식
$.ajax({
type: "POST",
url: "/test",
data: {title_give: '봄날은간다'},
success: function (response) {
console.log(response)
// {'result':'success', 'msg': '요청을 잘 받았어요'}
console.log(response['msg'])
// 받은 응답에서 msg만 콘솔출력 > 요청을 잘 받았어요
}
})
주문하는 것 - POST
: 주문하기 버튼을 클릭
주문을 보여주는 것 - GET
: 로딩이 완료되면 자동으로 화면에 보여져야 한다.
: 브라우저에서 입력한 데이터(이름, 주소, 평수)를 서버에 전달해야 한다.
API 만들고 사용하기 - 이름, 주소, 평수 저장하기 (Create → POST)
👉
1. 요청 정보 : URL=/mars
, 요청 방식 =POST
2. 클라(ajax) → 서버(flask) :name
,address
,size
3. 서버(flask) → 클라(ajax) : 메시지를 보냄 (주문 완료!)
(1) 클라이언트와 서버 연결 확인하기
(2) 서버 만들기 (app.py/flask)
(3) 클라이언트 만들기 (index.html/jquery)
(4) mongoDB에서 데이터 업로드 확인
👉
1. 요청 정보 : URL=/mars
, 요청 방식 =GET
2. 클라(ajax) → 서버(flask) : 서버에 저장 되어있는 데이터를 가져오는 거라 없음
3. 서버(flask) → 클라(ajax) : 전체 주문을 보내주기
1) 클라이언트와 서버 확인하기
2) 서버부터 만들기
orders
에 주문정보를 담아서 내려주기만 하면 된다.3) 클라이언트 만들기
4) 완성 확인하기
👉 조각 기능 : 본격적인 프로젝트를 구현하기 전에, 프로젝트에 필요한 기술들을 먼저 구현해보는 것이 좋다.
우리가 스파르타피디아 메인에서 URL만 입력했는데,
'제목', '썸네일 이미지', '내용' 자료를 자동으로 불러와야 한다.
참고 이미지 : URL 입력창
👉 이 부분은, 'meta'태그를 크롤링 함으로써 공통적으로 얻을 수 있습니다.
meta태그가 무엇이고, 어떻게 스크래핑 하는지, 함께 살펴볼까요?
메타 태그는 부분에 들어가는 눈으로 보이는 것(body) 외에 사이트의 속성을 설명해주는 태그들
예) 구글 검색 시 표시 될 설명문, 사이트 제목, 카톡 공유 시 표시 될 이미지 등
우리는 그 중 og:image / og:title / og:description 을 크롤링 할 예정
1) 프로젝트 준비 - app.py
,index.html
준비하기
2) API 만들고 사용하기 - 포스팅API (Create → POST)
👉 1. 요청 정보 : URL=
/movie
, 요청 방식 =POST
2. 클라(ajax) → 서버(flask) :url
,star
,comment
3. 서버(flask) → 클라(ajax) : 메시지를 보냄 (포스팅 완료!)
1) 클라이언트와 서버 연결 확인하기
2) 서버부터 만들기
url
, star
, comment
정보를 받아서, 저장meta_prac.py
도 참고해서 붙여보자.3) 클라이언트 만들기
url
, star
, comment
정보를 보내주면 된다. (서버와 약속했던 대로 키값 입력)4) 아래 내용 체크 후 완성 확인하기
movies
콜렉션 삭제