기타/What I Learned

[Flask API] 기초 지식

가죽방패 2024. 2. 5. 13:31

파이썬에서 Flask API는 웹 애플리케이션을 제작할 수 있는 마이크로 프레임워크이다

커뮤니티를 통한 기능 확장이 용이한 편이며 디버거 모드로 실행 가능한 웹 서버도 제공하여 디버깅 기능 또한 내장되어 있어 코드 동작 여부를 신속하게 확인 할 수 있다

 

RESTful 서비스에 유용한 동적 URL을 지원, Flask-SQLAlchemy 패키지로 ORM을 지원하여 데이터베이스에 접근할 수 있도록 기능 지원도 한다

from flask import Flask

app = Flask(__name__)

@app.route("/")
def basic():
    return "Hello World"

위와 같은 코드가 기본적으로 Flask를 사용하는 예시이며 터미널(VS code 기준)에 하단의 명령어를 입력하면 터미널 내에 flask가 응답한 결과가 나오게 된다

curl -X GET -i -w '\n' localhost:5000

실행 결과

from flask import Flask

app = Flask(__name__)

@app.route("/")
def basic():
    return {"message": "Hello World!"}

Content-Type이 html에서 json으로 바뀌었다

 

물론 응답 결과는 flask가 반환하는 결과 값에 따라 출력되는 결과가 다르다. 예를 들어, basic 함수의 리턴 값을 json 형식으로 변경하여 실행한다면 좌측과 같이 Content-Type 이 html 에서 json 형식으로 표시가 된다

 

 

 


# 기본 값은 GET 메서드임(명시하지 않아도 GET으로 작동)
@app.route("/경로")
# 명시하는 예시
@app.route("/example", methods=["GET", "POST"])
def example():
	if request.method == "GET": return jsonify(status="OK", method="GET"), 200
    	if request.method == "POST": return jsonify(status="OK", method="POST"), 200
        
'''
 요청 객체에는 다양한 정보가 있음
 서버 정보, 헤더, URL, access_route(여러 번 전달되는 요청 모든 IP 주소)
 full_path(요청 전체 경로), is_secure(HTTPS, WSS 프로토콜 사용시 True), is_JSON, cookies
 
 헤더 정보
 Cache-Control, Accept(클라이언트가 어떤 종류의 콘텐츠 유형을 이해하는지 알려줌), Accept-Encoding
 User-Agent, Accept-Language, Host
'''