장고는 path를 라우팅 할 때 urlpatterns을 사용해서 라우팅 합니다.
그리고 정해진 패턴들은 기본적으로 마지막에 슬래시가 추가되어 있습니다. 이런 슬래시를 Trailing Slash라고 부릅니다.
장고는 기본적으로 해당 방식을 사용합니다. 장고는 왜 이런 방식을 채택했을까요?
1. /board/ vs /board
https://www.google.com -> O
https://www.google.com/ -> X
도메인 뒤에는 기본적으로 슬래시가 붙습니다.
크롬 urls 창에서는 기본적으로 트레일링 슬래시가 안 보이게 되어있지만 실제로 요청이 보내질 때에는 슬래시가 붙여집니다.
그 이유는 http header에 루트는 슬래시가 포함되기 때문입니다.
하지만 도메인 뒤에 붙는 슬래시가 아닌 path에 붙는 슬래시는 다른 주소를 가리키게 됩니다.
https://www.google.com/path
https://www.google.com/path/
이렇게 된 이유는 과거엔 슬래시는 디렉터리를 나타내고 슬래시가 없으면 파일을 나타내는 구조로 작동했기 때문입니다.
하지만 현재에는 path로 파일을 가져오거나 디렉터리를 탐색하도록 작동하지 않아서 트레일링 슬래시가 큰 의미가 없어졌습니다. 그래서 트레일링 슬래시를 일정한 규칙으로 맞춰줄 필요가 생겼습니다.
장고에서는 트레일링 슬래시를 기본으로 설정하고, 트레일링 슬래시가 없는 요청이 들어오면 슬래시를 추가한 url로 리다이렉션이 되게 설정되어 있습니다. 그래서 기본적으로 url pattern을 지정할 때 트레일링 슬래시를 넣은 상태로 개발하게 됩니다.
2. 장단점
트레일링 슬래시를 사용하면 여러 장점들이 있습니다.
1. 일관적으로 유지가 가능해집니다. 트레일링 슬래시에 관해서 아무 제한이 없다면 각 엔드포인트마다 규칙이 달라질 수 있으며 예측할 수 없는 엔드포인트로 혼동이 올 수 있습니다. 하지만 트레일링 슬래시가 기본적으로 사용된다면 개발자와 사용자는 엔드포인트를 충분히 예측할 수 있습니다.
2. 사용자의 경험이 좋아집니다. 옛날엔 www. 를 쓰는 게 보편적이었지만 현재에는 거의 사용하지 않는 추세입니다. www.를 사용하지 않는 웹사이트에게 www.로 요청이 들어오면 올바른 페이지로 리다이렉션 시켜주는 것처럼 사용자가 트레일링 슬래시를 작성하지 않고 요청을 보내도 404 에러가 아닌 올바른 페이지로 자동으로 리다이렉션 시켜서 사용자가 페이지를 이용하기가 편리해집니다. 하지만 이런 리다이렉션은 데이터를 손실시키기에 post 요청 같은 경우에서는 단점으로 작용합니다.
3. 결론
트레일링 슬래시에는 여러 장점들이 있지만, 불필요한 리다이렉션등의 여러 단점과 Restful api 규칙에서는 트레일링 슬래시를 붙이면 안 되도록 되어있는 이유로 restapi를 개발할 때에는 붙이지 않는 것이 일반적입니다.
'django' 카테고리의 다른 글
Django - Inverted Index로 검색하기 (0) | 2024.12.29 |
---|---|
Django - squashmigrations (0) | 2024.12.16 |
Django - DB Connection (0) | 2024.10.27 |
Django core - WSGI (1) | 2024.10.21 |
DRF Serializer (2) | 2024.09.18 |