Flask, API

hyein·2022년 8월 22일

웹프로그래밍(중단)

목록 보기
12/12

Flask

서버를 만드는 파이썬 라이브러리

Flask 기본 폴더 구조

** venv 폴더 안에 만들면 안 된다!

static 폴더: 이미지, css파일
templates 폴더: HTML 파일을 담아두고, 불러오는 역할 (index.html 넣기)
app.py 파일 (flask 기본 구조 넣기)

Flask 시작코드

app.py에 flask 시작코드를 작성하고 시작한다.
@app.route('') 괄호 안 어퍼스트로피에 들어가는 걸로 주소를 정할 수 있다.
loacal:5000는 기본 주소이고,
만약 @app.route('/mypage')로 지정하면 loacal:5000/mypage 주소의 서버가 생기는 것이다.

def home():
return 'This is Home!'
함수를 정의해주고, 반환값을 작성해준다.
return 뒤에 쓰는 값들은 페이지에 뜬다.

//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)

그치만 매번 return 값을 모두 쓰기는 힘들다~
외부 html문서를 반환값으로 쓰면 편하겠지?
flask 내장함수 render_template를 이용하면 된다.
대신 외부 html문서는 templates폴더 안에 저장해놓는 걸로 한다.

  1. 제일 상단에 from flask import 뒤에 render_template를 추가로 써주고,
  2. return값에 return render_template('/templates폴더 안에 있는 html 파일문서 이름/')라고 작성하면 된다.
// render_template를 사용하는 flask 코드 예시 

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)
   

** IndentationError: unexpected indent 오류가 뜰 때는 자신이 정확하게 띄어쓰기, 들여쓰기를 했는지 확인해보자.
예시로는 함수를 정의하는 줄 def~ 앞에 띄어써줬는지 확인해보자! 띄어썼다면 제일 앞으로 오게 공백을 지워주면 된다.
혹은 반환줄(return)을 def ~ 아래에서 들여쓰기 해주었는지 확인해보자!

API

application programming interface
운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식을 말한다.

클라이언트가 서버에게 요청 할 때, "방식"이 존재한다.
HTTP 라는 통신 규약을 따르는데, 클라이언트는 요청할 때 HTTP request method(요청 메소드)를 통해, 서버에게 어떤 요청종류인지 그 정보를 알려준다.
그 정보를 알려줄 때 API를 사용하는 것이다!

요청 방법에는 여러 방식(링크)이 존재하지만 우리는 가장 많이 쓰이는 GET, POST 방식에 대해 다루어 볼 것이다.

  • GET → 통상적으로! 데이터 조회(Read)를 요청할 때
    예) 영화 목록 조회
    데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달
    → 예: google.com?q=북극곰

  • POST → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
    예) 회원가입, 회원탈퇴, 비밀번호 수정
    데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달

JQuery 임포트

Ajax로 요청하기 위함
** AJAX(Asynchronous JavaScript and XML):
JavaScript와 XML을 이용한 비동기적 정보 교환 기법
별도 프로그램을 설치하거나 웹페이지를 다시 로딩하지 않고도 메뉴 등 화면상의 객체를 자유롭게 움직이고 다룰 수 있다.

templates 안에 넣어둔 html 파일의 <head>에 아래의 코드를 삽입해준다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

Get요청 확인 ajax

$.ajax({
type: "GET",
url: "/test?title_give=봄날은간다",
data: {},
success: function(response){
console.log(response)
}
})

POST 요청 확인 ajax

$.ajax({
type: "POST",
url: "/test",
data: { title_give:'봄날은간다' },
success: function(response){
console.log(response)
}
})

0개의 댓글