dor.gg

[Python] flask HTTP 메소드 GET

leui 2022. 2. 10. 13:12

* 폴더 구조는 이전 게시물과 똑같이 진행한다.

이번엔 flask 에서 HTTP 메소드를 간단히 알아보고 URL로 접근하는 몇 가지 방법을 알아보자.

 

GET

먼저 가장 기본적인 GET 메소드이다. GET은 클라이언트가 url로 단순하게 서버로 부터 데이터를 읽거나(Read) 검색하는 메소드이다. 예를 들어 https://leui.tistory.com/1 을 주소창에 입력하면 이 블로그의 첫번째 게시물이 나오고 https://leui.tistory.com/2는 두번째 게시물이 나온다. tistory는 마지막에 숫자로 데이터베이스에 있는 leui의 1번 게시물과 2번 게시물을 각각 가져온다고 보면 된다.

flask에서 간단히 넘어오는 데이터를 그대로 출력하도록 구현해 보자.

 

(@app.route('/') 따로 메소드를 지정해주지 않으면 기본값은 GET이다.)

 

from flask import Flask, request

def create_app():
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return "hello!!!"
        
    @app.route('/users/<string:nickname>')
    def get_nickname(nickname):
        '''default = str'''
        return f'nickname = {nickname}'
    
    @app.route('/post/<int:id>')
    def get_id(id):
        return f'id = {id}'
    
    @app.route('/<path:subpath>')
    def get_path(subpath):
        return subpath
    
    @app.route('/args')
    def get_args():
        name = request.args.get('name')
        age = request.args.get('age')
        return f"이름: {name}   나이:{age}"

    
    return app

 

 

먼저 @app.route('/users/<string:nickname>')은 유저의 닉네임으로 유저의 프로필을 가져오는 상황이라고 생각해보자.

URL에 "/<string:nickname>"부분을 get_nickname(nickname) 함수의 파라미터로 받아서 사용할 수 있다.

 

 

 

 

URL의 /<nickname> 부분에 "leui"로 적어 보내면 서버에서 nickname을 "leui"로 잘 받은 것을 볼 수 있다.

 

다음으로 @app.route('/post/<int:id>')은 게시물을 게시물 id로 가져오는 상황이다.

위에 있는 예제와 똑같은 방식이지만 게시물의 id가 int라면 <>안에 "int:"라는 데이터 형식을 적어줌으로써 string이 아닌 int로 서버에서 받을 수 있다.(기본 형식은 string)

 

다음은 uri를 가져올 수 있는 @app.route('/<path:subpath>') 부분의 path 이다. 

path는 말그대로 경로다. 형식을 path로 적어준 부분을 가져온다.

마지막으로 @app.route('/args') 부분의 query string이다. query string URI 뒤에 ? 이후에 "키1=값1&키2=값2" 이런식으로 구성되어 있다.

name = request.args.get('name') 코드는 "name"이라는 키로 "leui"라는 값을 가져온 것이다.

dor.gg

'dor.gg' 카테고리의 다른 글

[Python] flask blueprint 라우트 확장  (0) 2022.02.14
[Python] flask HTTP 메소드 POST  (0) 2022.02.11
[python] flask application factory  (0) 2022.02.09
[python] flask 서버 열기  (0) 2022.02.09
(dor.gg) 서론  (0) 2022.02.04