일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- C
- kodility
- NDK
- mfc
- android push
- Android
- android architecture component
- Python
- 알고리즘
- 코틀린
- UWP
- Django REST
- FLUTTER
- Kotlin
- C++
- livedata
- C/C++
- Android P
- Django REST Android
- 안드로이드
- RxJava
- flutter firestore
- 프로그래머스
- dart
- RxAndroid
- Java
- 안드로이드 구글맵
- Rxjava2
- Flutter TextField
- Django REST framework
- Today
- Total
개발하는 두더지
[Django] Django REST Framework ( DRF ) 와 안드로이드 연동하기 - 2 본문
지난 시간에 이어 안드로이드에서 REST를 받을 수 있는 라이브러리와 적용방법에 대해서 알아보겠습니다.
Django 서버를 외부에서 접속하려면 0.0.0.0 으로 서버를 실행해야합니다.
그리고 접속허용할 외부 IP를 설정해야합니다.
settings.py
' * ' 은 어떤 IP든 전부 접속허용을 해주겠다는 의미입니다.
ALLOWED_HOSTS = [ '111.222.333.444' , '222.666.777.888' ] 는
IP 주소가 111.222.333.444 , 222.666.777.888 만 Django 웹서버로 접근을 허용하겠다라는 의미입니다.
6-2. ngrok 세팅 방법
ngrok는 도메인 할당하는 것처럼 localhost를 외부에서 접근할 수 있게 해주는 툴입니다.
고정아이피를 사용하고 외부접근 포트를 바인딩해주고, Django runserver 0.0.0.0 와 외부접근 바인딩된 포트를 사용하면
외부에서 쉽게 접근하겠지만 유동아이피를 사용한다면 외부에서 접근하기 쉽지 않습니다.
이때 ngrok를 사용한다면 외부에서 쉽게 접근할 수 있습니다. 다만 다른 서버를 거쳤다가 오기때문에 속도면에서 느리므로
테스트용으로만 사용해야 합니다.
그림으로 보면 쉽게 이해가 갑니다.
1. 아래의 링크에 들어가서 설치를 합니다.
다운로드 링크 ( https://ngrok.com/ )
저는 윈도우를 쓰기때문에 윈도우 버전으로 설치했습니다
2. ngrok 를 실행합니다
그리고 ngrok http 포트번호( django runserver할때 사용하는 포트번호) 를 입력하고 엔터를 눌러줍니다.
3. 동작확인
http://df3c2dde.ngrok.io 가 외부 접속할 수 있는 URL 입니다.
http://df3c2dde.ngrok.io 가 localhost:8000 과 매핑이된다고 상세하게 써져있습니다.
참고로 URL은 ngrok를 다시 켤때마다 새로운 URL을 주기때문에 항상 확인해야 합니다.,
브라우저 또는 다른 네트워크 대역에 있는 장치에서 위의 URL을 입력해봅니다.
지금은 제 PC의 브라우저에서 스크린샷을 찍었지만 스마트폰에서 접근하면 페이지가 잘열립니다.
ngrok에서 Http Requests 를 보여주고 오른쪽에 Http Response Code도 함께 보여주기 때문에
로그를 확인하면서 테스트를 할 수 있습니다.
7. 안드로이드 RETROFIT 설정
우선 RETROFIT이 무엇인지 살펴보겠습니다.
Retrofit은 Square에서 만든 REST Api를 손쉽게 사용하기 위한 Java, Android 라이브러리 입니다.
그리고 CURD 기능을 모두 제공합니다.
Create : POST
Update : PUT, PATCH
Read : GET
Delete : DELETE
또한 JSON 데이터를 클래스로 변환시켜주는 라이브러리들도 지원합니다.
- Gson:
com.squareup.retrofit2:converter-gson
- Jackson:
com.squareup.retrofit2:converter-jackson
- Moshi:
com.squareup.retrofit2:converter-moshi
- Protobuf:
com.squareup.retrofit2:converter-protobuf
- Wire:
com.squareup.retrofit2:converter-wire
- Simple XML:
com.squareup.retrofit2:converter-simplexml
- Scalars (primitives, boxed, and String):
com.squareup.retrofit2:converter-scalars
안드로이드 프로젝트를 만들고 Gradle 파일을 열어 아래 코드를 추가합니다.
retrofit 과 Gson을 사용할 것이므로 아래 2개를 추가해야합니다.
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
네트워크 코드 만들기
- Application을 상속받은 ApplicationController 클래스 생성
안드로이드에서 Application 클래스는 애플리케이션 컴포넌트 사이에서 공유할수 있게 해줍니다.
어디서든 context를 이용한 접근이 가능하게 됩니다.
[사용방법]
1) Application 클래스 상속
ApplicationController.java
2) AndroidManifest.xml 에 Application 클래스 Name 추가
애플리케이션에서 인터넷을 사용하므로 인터넷 퍼미션 추가해야 합니다.
<uses-permission android:name="android.permission.INTERNET"/>
8. Call 인터페이스 만들기
여기서 만든 Call은 동기 또는 비동기하는 HTTP 요청을 원격 웹서버로 보낼수 있습니다.
HTTP 요청은 어노테이션을 사용하여 명시합니다.
- URL 파라미터 치환과 쿼리 파라미터가 지원됨
- 객체를 요청 body로 변환 ( JSON 형태)
- 멀티파트 요청 body와 파일 업로드가 가능함
9. REST GET, POST, PUT(PATCH) , DELETE 결과 확인
activity_main.xml
VERSION GET 과 RESTAURANT GET을 클릭했을 때 결과물
브라우저에서 결과물
'Django' 카테고리의 다른 글
[Django] Django REST Framework ( DRF ) 와 안드로이드 연동하기 - 1 (1) | 2017.06.08 |
---|---|
[Django] Windows 10 + Pycharm + Django + MySQL DB 연동하기 (1) | 2017.05.29 |