-
[Python] URL Shortener #1 (feat. Django, Postman검증)Backend/Django 2021. 1. 4. 01:41
url shortener 웹 페이지 개발을 위한 삽질 기록입니다.

YoURL 메인페이지 Bitly | Custom URL Shortener, Link Management & Branded Links
Shorten, create and share trusted, powerful links for your business. Bitly's url and link shortener helps you with industry-leading features like custom domains, branded link and link redirects.
bitly.com
위 사이트 처럼 url shortener를 만들어 긴 주소의 url을 압축해서 반환해주는 기능의 웹 페이지를 만들어 보겠습니다.
url shortener의 등장 배경은 트위터가 등장하면서 글자수 140자의 길이 제한을 두어 긴 url 주소링크를 포함한 트윗을 작성할 때 불편함을 해결하기 위함이라고 합니다. 즉 url shortener로 주소를 짧게 변환하여 original 주소 바로가기로 활용할 수 있게 되었습니다.
0. 먼저 Django 초기 세팅은 아래에서 참고하시면 됩니다:)
https://ninano1109.tistory.com/49?category=951763
[Django/Python] 장고 새 프로젝트 만들기(feat.웹 서버 띄우기)
들어가기에 앞서. Django는 장고라고 읽습니다. 디장고 아닙니다..... Django는 백엔드 프레임워크로 python 언어를 사용하여 개발합니다. 1. Python을 사용하는 이유 - 쉬워서 2. Django를 활용하는 이유 -
ninano1109.tistory.com
1. DB모델링

models.py 새 프로젝트를 위한 앱(shorteners)을 생성했다면, models.py에서 Url 테이블을 만들어줍니다.
Url 테이블에는 2개의 필드는 만들어 주었는데,
1. link라는 원래 오리지날 url 주소 저장하기 위한 필드이고
2, new_link라는 짧게 압축한 새로운 url 주소 저장하기 위한 필드입니다.
그런 다음 새로운 테이블을 만들었다면, migrate를 해주어야 합니다.
# manage.py가 있는 위치에서 $ python manage.py makemigrations $ python manage.py migrate2. serializer 파일 생성(json형태로 반환)
프론트와 통신하기 위해서는 데이터를 json 형태로 바꾸어 주어야 합니다. 이를 위한 기능이 django의 serializers 입니다.
models.py와 같은 위치에 serializers.py 파일 생성 후 아래와 같이 입력

serializers.py 3. urls설정
urls 주소를 설정해주어야 합니다. 2가지 urls.py에 추가해야 하는데 프로젝트(YoURL) urls.py와 앱(shorteners) 하위의 urls.py입니다.
아래 사진 맨 위에 폴더 구조를 잘 확인하세요
Project 하위 urls.py에 작성

Project 내 urls.py App 하위에 urls.py 파일 생성 후 입력

App 내 urls.py 4. views.py 에서 실행 함수 작성
기존주소를 DB에서 조회 후 없으면 변환해서 저장하기

기존 주소 입력 후 실행 함수 Base62 기법으로 기존 주소 변환하기

랜덤으로 기존 url 암호화하기 변환주소를 다시 기존주소로 redirect하기

변환 주소 입력 후 기존 주소로 이동 5. Postman 검증
아직 프론트 페이지가 만들어 지지 않았을 때, 백엔드로 개발을 하면서 정상 작동을 확인할 수 있는 방법으로 Postman을 사용하면 됩니다.
postman 다운로드 후 백엔드 서버를 돌리고 주소창에 서버 주소를 입력하여 GET/POST 등 선택, Headers와 Body에 필요한 정보들을 넣어 send 버튼으로 데이터 응답을 확인하거나, 오류 메세지를 볼 수 있습니다.
아래와 같이 서버 주소 입력 후 POST로 설정하고,
Body에 변환하고자 하는 링크를 아래와 같은 json(딕셔너리) 형태로 입력하고 send버튼을 눌러줍니다.

입력형식 오류 위와 같이 "detail": "Unsupported media type \"text/plain\" in request." 오류가 나온다면
입력 형식을 json 타입으로 바꾸어 주면 됩니다.

Text => JSON 타입으로 바꾸기 그러면 아래와 같이 정상 작동하는 것을 확인할 수 있습니다!

정상 작동 화면 이상 오늘의 삽질일기 끝!
여기저기 삽질도 해보고
날려도 먹으면서
배우는 게
결국 남는거다
- Z.Sabziller
반응형'Backend > Django' 카테고리의 다른 글
[Python] Django 장고 새 프로젝트 만들기 (feat.웹 서버 띄우기) (2) 2020.12.16