웹개발종합반 4주차

jathazp·2022년 1월 3일
0

15

목록 보기
4/14

1. 서버 만들기

앞에서 한건 어떻게 보면 서버에 갖다줄 파일을 미리 만든것

이제 서버를 만들어서 요청을 받고 뭔가 파일을 갖다 주거나 db에 작업을 하는 서버를 만들어보자.

서버?

서버는 컴퓨터에 돌아가는 하나의 프로그램 이라고 생각(포토샵 워드 엑셀처럼 하나의 프로그램)

내가 서버 만들고 내가 접속해보는데 (로컬 개발환경) 이번 4~5주차는
로컬 개발환경에서 진행을 하고 5주차 후반부에 서버의 결과물을 특정 컴퓨터를 사서 거기 올리는 작업을 할 것.. 그럼 내 컴퓨터가 안켜져 있어도 모든사람이 그 컴퓨터를 통해 접속이 가능하겠지

Flask 프레임워크 설치

=> 일반적으로 서버를 만들때 프레임워크를 가져다 쓰는데

프레임워크는 남이짜둔 규칙이나 틀 안에서 내가 코딩을 자유롭게 하는것

라이브러리는 내가 내맘대로 짜는데 남이 만들어놓은것을 중간에 가져다쓰는 것

그래서 통상적으로 하나의 프레임워크 안에서 여러개의 라이브러리를 가져다 쓴다

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)
   #5000은 포트를 의미
   #5000으로 열어놨기 때문에 내 컴퓨터에서 5000번으로 접속 가능
   #포트는 항구처럼 서버 밖에다가 인터넷세상으로 뚫어놓은 문이다

Flask 사용

static(css,image 파일들을 담아둘때 씀)
과 templates(html파일 담아둘 파일) 폴더 추가로 생성

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
   return render_template('index.html')
   #templates의 index.html 파일을 갖다가 클라한테 줌

@app.route('/mypage')
def mypage():
   return 'This is Home!2'



if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)
#local:5000가면 app.route('/')으로 가고
#home함수실행되고 render_template에 의해 index.html 바로 리턴해줌
#그럼 브라우저는 받아서 그려줌

API 만들기

API: 서버가 클라이언트의 요청을 받기 위해 열어놓은 창구

GET:
통상적으로 데이터 조회시 사용
데이터 전달: URL 뒤에 ? 붙여서 key=value 형태로 보냄

POST:
통상적으로 데이터 변경 삭제 생성시
데이터 전달: 바로 보이지 않는 HTML body에 key:value형태로 전달

api 만드는 순서
1.클라이언트와 서버 연결 확인
2.서버 만들기
3.클라이언트 만들기
4.핑퐁 해보면서 완성 확인하기

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

@app.route('/')
def home():
   return render_template('index.html')

@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})

#localhost:5000 에서 console로 ajax통신으로 /test?title_give='봄날은 간다' method='get' 로 데이터 요청 
#그럼 서버에서 title_receive에 봄날은 간다가 들어오고
#작업후 return 해줄 수 있음

@app.route('/test', methods=['POST'])
def test_post():
   title_receive = request.form['title_give']
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
   
   
 #post는 같은 역할인데 데이터 주는 모양이 조금 다르지?
 #만약 title_give2로 보낸다면?
 #Internal server error가 난다. => 서버 내부에서 에러
 #why? 서버 내부에서 title_give를 찾는데 title_give를 못받았으니까 없는값을 찾으니까 에러가 나지..
 
if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)

meta태그?
=>미리보기(og:image,og:title,og:describtion..)

url만 가지고 데이터 긁어오는법!!

메타태그 이용해서 스크래핑 하면됨

(?)그 템플릿이 어떤거랑 매칭되는지 어디서 구분?

@app.route('/')
def home():
   return render_template('index.html')

로딩끝나면 호출
$( document ).ready(function() {
// Handler for .ready() called.
});

화면갱신
$('#something').click(function() {
location.reload();
});

4주차때 나홀로메모장 메타태그로 크롤링..
기존에 하던 방식이랑 뭐가 다른점?
=>기존에 하던거와 다르게 메타태그에는 화면에 보이지 않는 요약된 정보들이 있네 쉽게 긁어가라고 => 그래서 화면의 정보를 크롤링 하지않고 메타 태그의 정보들을 크롤링.. 굳이 어렵게 화면의 정보를 크롤링 하려면 할 수 는 있겠다만 그렇게 할필요가 없는거지 메타태그라는 정보창고가 있음..
+)og태그 미리보기

연습!!
연습!!
코드 보고 api구성해서 데이터베이스 붙이고 프론트랑 연결하고
이거 연습!!연!습!!!

0개의 댓글