https://dawonny.tistory.com/11?category=991193
API 에 대해서 정리한 포스트.
이번에는 REST API 서버를 구축을 한번 해보고 싶다.
해봐야 뭐가 뭔지 알 것 같아서.
아래 포스팅을 참고했다.
http://throughkim.kr/2018/05/29/django-rest/
https://jamanbbo.tistory.com/43
가상환경을 사용하는 이유 : 파이썬 패키지(라이브러리) 간 의존성 때문에 쓴다
특정 패키지 버전을 업데이트 할 때 다른 것들이 호환되지 않아 문제가 생기는 경우가 발생한다
그리고 작업 환경 바뀌더라도( pc 교체하더라도 ) 필요한 패키지들을 동일한 버전으로 설치해 작업할 수 있음
찾다보니 virtualenv 와 venv 를 쓸 수 있더라
근데 파이썬 3에서는 venv 라는 가상환경 라이브러리라 기본적으로 제공 되어서 굳이 virtualenv 설치해서 안써도 된다고 함.
가상환경 생성하기위해 내가 작업하는 폴더안으로 들어가자
그리고
python -m venv 가상환경이름
이렇게 쳐주면 된다. 가상환경 이름은 그냥 venv로 만들었다. 어떤 프로젝트든 가상환경을 활성화 하고 싶을때 venv 라는 이름으로 사용하면 되기 때문.
이제 가상환경 활성화를 시켜보려고 한다.
가상환경이름\Scripts\activate.bat
이라고 치면 된다(나는 venv\Scripts\activate.bat 이라고 쳤음)
그랬더니
이렇게 뜬다.
맨 왼쪽에 ( 가상환경이름 ) 이렇게 뜨면 활성화가 되었다는 의미이다.
비활성화 하고 싶으면 아무것도 없이 그냥 deactivate 이라고 치면 된다
일단 가상환경을 만들고, 진입 했으니 pip으로 django와 django-rest-framework를 설치한다
pip install django
pip install djangorestframework
pip install django-rest-swagger
pip 버전 업그레이드 하라는 노란 글씨가 매우 신경이 쓰여서.. 해봤다
된..듯하다
그리고 아래와 같이
'rest_framework', 'moves.apps.MoviesConfig'
Django Rest Framework와 앱을 등록해줌
그 담엔 Movie 라는 모델 생성
필드가 3개다
모델을 만들고 나서는
python manage.py makemigrations
python manage.py migrate
을 해줬다
이번엔 serializer 를 생성해줄거다
Serializer란 queryset과 모델 인스턴스와 같은 복잡한 데이터를 json,xml 또는 다른 유형으로 쉽게 변환할 수 있다.
serializers 를 임포트하고
모델 Movie도 임포트 한다
이번에는 views.py 를 작성하려고 한다
django rest framework 는 view 로직을 그룹화한 viewset을 제공한다
이거 사용하면 CRUD 직접 안짜도 기능을 사용할 수 있다.
viewsets 임포트하고
serializers.py에서 MovieSerializer 임포트
models.py 에서 Movei 모델 임포트
이번엔 urls.py를 작성해보자
rest framework에는 router 라는게 있는데 viewset을 router에 연결하면
자동으로 url을 맵핑 해준다.
runserver하고 localhost:8000 에 들어갔더니
이렇게 보인다
movies/ 링크로 들어가보면
이렇게 보인다
GET/movies 는 영화의 리스트를 요청하는 uri 이다
지금은 빈 리스트를 반환하고 있다.
영화를 몇 개 저장해보자
3개를 추가해줬다.
http://localhost:8000/movies/3/
로 들어가면 저렇게 id가 3인 movie 객체를 볼 수 있다.
PUT 메소드로 보내면 해당객체를 수정하고
DELETE 메소드로 요청하면 해당 객체를 삭제함.