[flask] 간단하게 flask 웹 서버 만들어보기

lilys2·2021년 11월 8일
0

flask

목록 보기
1/1

간단한 정리

  1. 클라이언트 : 사용하는 사람
  2. 서버 : 클라이언트로 부터 요청을 받아서 처리하고, 응답으로 데이터를(json,xml 등) 내보내는 곳
  3. 요청 : 미리 약속한 규칙(프로토콜)을 통해 요청함
  4. 응답 : 정해진 형태의 데이터로 응답함
  5. API : 데이터의 통로, 정해진 통신 방식

Flask?

python을 이용하여 웹서버를 만들 수 있도록 도와주는 web-framework

장점

  • 서버를 쉽게 만들 수 있음
  • 간단한 코드로 빠르게 실행 가능
  • 원하는 기능을 유연하게 확장하기 편리함

실행하기

  • 기본 구조
#1
from flask import Flask
app = Flask(__name__)

#2
@app.route("/):
	#3
    def hello():
    	return "Hello World!"
if __name__ == "__main__":
	app.run()
  1. flask 임포트
  2. 서버에 접속할 수 있는 url 생성
  3. /에서 실행할 함수
  • json형식의 데이터 나타내기
#1
from flask import Flask,jsonify
app = Flask(__name__)

@app.route("/")
def hello_json():
	#2
	my_data={"name":"woonee"}
    #3
    return jsonify(my_data)

if __name__ == "__main__":
	app.run()
  1. json을 리턴하려면 jsonify를 임포트해야함
  2. my_data에 데이터 삽입
  3. json 파일 리턴
    => html파일은 render_template을 이용하여 리턴 할 수 있다.

HTTP Method 사용하기

  • @app.route('url',methods=["GET"])
  • @app.route('ur2',methods=["GET","POST"])
    ->이렇게 하나의 주소에서 여러개의 메소드 사용이 가능하다.

GET 예시

#1
from flask import Flask, jsonify,request

app = Flask(__name__)
#2
@app.route("/",methods=["GET"])
def hello():
	#3
	name = request.args.get('name')
    return jsonify(name)
if __name__ == "__main__":
	app.run()
  1. request 임포트
  2. GET method 선언
  3. request로 보낸(url주소의 ? 뒤의 값 중 name) 값을 받아서 name에 저장

-> 나중에 공부를 더 해서 다양한 메소드 통신 방식을 포스팅 해야겠다.

에러 처리 해주기

로깅

  • 프로그램이 작동할 때 발생하는 이벤트를 추적하는 행위
  • debug<info<warning<error<critical 순대로 위험도가 높음
  • flask의 기본세팅은 warning임 (이하는 출력 X)
  • 에러가 발생했을 때 logger를 사용하여 에러를 확인 할 수 있다.
  • 예시
from flask import Flask,render_template

app = Flask(__name__)

#1
@app.errorhandler(404)
def page_not_found(error):
	#2
	app.logger.error(error)
    return 
    	#3
	render_template("page_not_found.html")
    
 @app.route("/")
 def hello():
 	return "Hello World!"

if __name__=="__main__":
	app.run()
  1. errorhandler를 통해 404 에러일 때 아래의 함수를 실행하게함
  2. 로거를 통해 에러 프린트
  3. 404 에러일 때 page_not_found.html파일을 리턴하게함

엘리스 ai track3기 수업을 들으며 정리한 내용을 바탕으로 작성된 포스팅입니다.

profile
우주최강 개발자가 될 때까지😈

0개의 댓글