* 폴더 구조는 이전 게시물과 똑같이 진행한다.
이번엔 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 |