Django로 REST API 서버 구축 튜토리얼 따라가기 1편
— Django, RestFramework — 1 min read
이 포스트는 장고걸스튜토리얼 정도의 Django 이해도를 가진 상태의 사람(=저)를 대상으로 합니다.
환경
- OS X 10.12.5,
- pycharm Professional 2017.2
- python 3.4
- django 1.11.4
또한 기본적으로 PyCharm과 함께 DJango와 RestFramework를 활용한 웹 사이트 구축하기 – DevIssue 다음 포스트 글을 따라하며 생긴 오류들을 정리합니다.
들어가며
준개입니다.
우아한 테크캠프 프로젝트에서 Firebase를 백단으로 사용하고습니다.
하지만 Firebase는 상당히 느리죠. 체감할 정도로 속도 이슈
가 발생했습니다.
마침 다른 조를 보니 rails로 서버를 세팅하는데 10시간 정도 걸렸다고 하더군요.
해서 rails에서 django로 갈아탄 저는,
바로 코드스쿼드 마스터 호눅스님께 여쭤보아 튜토리얼을 추천받았습니다.
이 글에서는
- 튜토리얼 내용을 요약합니다
- JsonField를 사용하기위해서 postgreSQL을 django에 적용합니다.
- 튜토리얼 과정에서의 오류를 정리합니다.
- 사용자의 요청에 따라 모델을 filter를 해서 보내줍니다.
REST API
일단, API는 무엇일까요? 간단히 말해서 API는 어떤 응용프로그램에서 다른 프로그램(OS든, 또다른 응용프로그램이든)을 잘 이용할 수 있도록 만들어놓은 약속입니다.
이 포스트에서의 API
는 클라이언트가 요청을 보내면 서버에서 요청에 맞는 ‘데이터’를 보내주는 API를 말합니다.
그러면 REST API는 뭘까요?
제가 이해한 REST API는, 메소드와 자원을 분리해서 적어주는 API
를 말합니다.
예를 들어 어떤 앱에 1번 상품을 가져와야하는 요청을 하는 API를 만든다고 생각해봅시다.
즉 HTTP의 기본 메소드인 GET / POST / PUT / DELETE를 사용하여, CRUD를 표현하고, URI에는 그 대상이 되는 자원 을 말해주는 것이죠.
더 알고싶다면 여기를 참고하세요.
Django Rest API 서버 튜토리얼
Django Rest API 준비
Django로 Rest API를 만들기 위해서는 다음 두 가지 패키지를 설치해야합니니다.
- djangorestframework
- django-rest-swagger
- django
다만 2017년 8월 19일 기준으로 djangorestframework(3.6.3) 는 튜토리얼 상 진행에 문제가 없는데, django-rest-swagger(2.1.2) 버전이 깔리면서 문제가 생깁니다. 2.0 버전 이후로 swagger가 urls를 지원하지 않기 때문입니다.
조급하게 2.1.2버전을 까셨다면 이렇게 해보세요.
잘 설치됐다면 django와 restframework도 깔아줍시다.
이제 추가로 설정을 하러 갑시다.
프로젝트명/Settings.py
settings.py 의 INSTALLED_APPS에 rest_framework와 rest_framework_swagger을 적용합니다.
프로젝트명 / urls.py
그리고 urls.py에 각각 rest-api, rest-swagger라는 이름의 url에 대한 설정을 해줍니다.
이 부분에서 rest_framework_swagger 버전이 2.0이 넘는다면 실행되지 않을 수 있습니다. 장고 1.8부터는 patterns를 import할 필요가 없이 바로 쓸 수 있다고하네요.
서버 실행해보기
localhost:8000/ 에 들어가면 page not found가 뜹니다. 침착하게 localhost:8000/rest-swagger/api-docs를 쳐봅니다. 이상한 json데이터 가 보이면 성공입니다.
PostgreSQL을 적용하기
django의 기본 데이터베이스는 sqllite입니다. 하지만 sqllite로는 django와 Postgre에서 지원하는 JSONField를 쓸 수가 없습니다.
파이어베이스에서 이전해오는 것이기때문에, 복잡한 json형식의 칼럼들은 그대로 jsonfield를 써서 지원하고 싶었습니다.
모델을 만들러 가기전에 postgreSQL로 갈아끼워봅시다. 이 장고걸스 튜토리얼 을 보면 쉽게 postgreSQL을 설치할 수 있습니다. 시행착오는 있었지만요. 역시 장고걸스 만만세!
설치 했다면 다음 과정을 따라합니다.
여기까지가 PostgreSQL의 설정입니다.
이제 django에서 쓸 수 있도록 추가 설정을 해봅시다 .
이제 프로젝트의 Settings.py를 가서 마지막 설정을 해주어야합니다.
프로젝트명/settings.py
settings.py에서
이렇게 되어있는 부분을
로 바꿔줍니다.