라우팅이란?
어떤 주소를 누가 담당할 것인지, 어떤 요청을 어떤 함수가 응답할 것인지를 연결해 주는 작업이다.
라우팅을 사용할 때에는 route() 데코레이터를 사용하여 함수와 URL을 연결시켜 준다.
여기서 데코레이터란 클래스에서 메소드를 만들 때 @로 시작하는 것들이 데코레이터이다.
경로에 아무것도 입력하지 않으면 home()함수가 응답하여 실행되고, 경로가 입력 된다면 그 경로에 맞는 함수가
실행되게 된다.
변수 규칙
파이썬 Flask에서는 경로에 변수를 사용할 수 있는데 경로에서 <>를 사용하여 변수를 받아 올 수 있다.
왼쪽 소스 처럼 <id>를 사용하면 변수를 받을 수 있다. 이때 밑에 함수를 실행 하게 되면
함수가 호출되면서 매개변수로 전달하기 때문에 함수에 같은 변수명을 넣어줘야 한다.
변수의 자료형을 기본적으로 String 형이기 때문에 다른 자료형으로 사용하려면 <> 안에 자료형을 같이 써주면 해당 자료형으로 변환된다.
예시 -> @app.route('/read/<int:id>/')
위 처럼 쓰면 자료형이 int로 변환된다.
후행 슬래시
왼쪽 소스를 보면 /about 경로에는 후행 슬레시가 없고 /project/ 경로에서는 후행 슬래시가 있는데 후행 슬레시가 없는 경우 파일 경로 이름과 비슷하다.
후행 슬레시가 없는 경우 후행 슬레시를 쓰게 되면 왼쪽 사진처럼 404 오류가 발생한다.
반대로 후행 슬레시가 있는 경우 경로에 후행 슬레시를 쓰지 않고 검색을 해도 자동적으로 후행 슬레시가 있는 경로로 리디렉션 해준다.
URL 구축
파이썬 Flask 에서는 특정 함수에 대한 URL을 생성 할 수 있는데 url_for() 함수를 이용하면 된다.
url_for() 함수 안에 함수 이름을 넣으면 해당 함수가 있을 경우 해당 함수를 실행하는 URL을 생성 해 준다.
위 소스를 실행한 결과이다. 클릭할 경우 해당 함수와 연결되어 있는 경로로 이동하게 된다.
HTTP 메소드
HTTP는 URL 접근에 대해 몇가지 방식을 제공하고 있는다. 기본적으로는 GET 방식을 제공 하지만 route() 데코레이터에 methods 옵션을 추가하여 다른 방식으로 변경할 수 있다. 대표적인 HTTP 메소드는 GET 방식과 POST 방식이 있다.
GET 방식은 url을 통해서 서버로 데이터를 전송하는 방식이다.
GET 방식으로 데이터를 전송 할 경우 왼쪽 사진처럼 url을 통해서 입력한 데이터가 전송된다.
POST 방식은 데이터가 url을 통해서 전달되지 않고 HTML BODY에 내용이 담겨져서 서버에 테이터를 전송하는 방식이다.
POST 방식을 사용하기 위해서는 위에 방식으로 method="POST" 를 사용하면 되는데 route() 함수 안에 조건이 없을 경우 GET 방식만 받기 때문에 methods=['GET', 'POST'] 를 써서 POST 방식을 사용해야 한다.
사용자가 경로를 통해서 들어가게 되면 GET 방식을 사용하기 때문에 GET 부분 내용을 출력하고 POST 방식을 사용하여 데이터를 전송하면 데이터를 추가하는 소스이다. 왼쪽 사진을 보면 /create/ 경로로 들어갔기 때문에 GET 방식을 사용하여 학교 이름과 주소를 전송하는 부분이 표시되었다.
값을 입력하게 되면 POST 방식으로 데이터를 전송하여 학교가 하나 추가되 것을 볼 수 있다.
'Flask-Study' 카테고리의 다른 글
Ep04 : 블로그 웹 애플리케이션 개발(1) - 회원가입 / 로그인 / 로그아웃 처리 (0) | 2022.07.21 |
---|---|
Ep03 : 블로그 웹 애플리케이션 개발(0) - 프로젝트 생성, 패키지 설치, 기본작업 (0) | 2022.07.16 |
Flask란? (0) | 2022.07.12 |
Ep02-2 : Python에서 데이터 베이스 접근하기 (0) | 2022.07.10 |
Ep01: 플라스크 개발 환경 설정 후 과제 (0) | 2022.07.02 |