통신의 기본
HTTP?
- 하이퍼텍스트 기반(링크 기반)으로 데이터를 주고 받는다.
- 인터넷 상에서 데이터를 주고 받기 위한 Client/Server 모델을 따르는 프로토콜
- 가장 성공적으로 평가받는 프로토콜
프로토콜
Client/Server
주요 메소드
GET
: 데이터 받기
: URL 혹은 URL에 변수를 포함시켜(포함시키지 않을 수도 있음) 데이터를 받는 방식
POST
: 데이터 생성
: 데이터를 Body(일종의 객체)에 감싸서 보내는 방식
PUT
: 데이터 업데이트
: POST
와 마찬가지로 Body에 감싸서 보내는 방식
: 성공적으로 보내면 데이터가 업데이트 된다.
DELETE
: 데이터 삭제
: 성공적으로 보내면 데이터가 삭제 된다.
In Android
- Http 기반 REST API(GET,POST,PUT,DELETE)를
Retrofit2
라이브러리를 통해 사용
- REST API의 표현식인 JSON을 Object 개념으로 바꿔주는 GSON 라이브러리를 함께 사용
Retrofit2
Retrofit2이란?
- Http REST API 통신을 위한 라이브러리
- @ annotation 형식을 통해 사용
- 인터페이스를 통해 쉽게 구현 할 수 있다.
- JSON을 간단하게 처리할 수 있다.
JSON/GSON
JSON
JSON
이란 ‘Key’:value 조합을 갖는 데이터를 말한다.
value
에는 숫자, 문자열, 배열, 논리, 객체가 올 수 있다.
- JSON 자체를 배열로 받을 수 있다.
- 객체는 중괄호로 {} 구분하고, 배열을 대괄호로 [] 구분한다.
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 31
| "JSON Object" : { "name" : "Lee", "age" : 25, "part" : android, "etc" : { "dog" : false, "cat" : false } }
// JSON Object
"JSON Array" : [ { "name" : "탁형민", "nick" : "탁클라운" "age" : 25 }, { "name" : "류수한", "nick" : "류뚱" "age" : 25 }, { "name" : "이종찬", "nick" : "종팡" "age" : 26 }, ]
// JSON Array
|
GSON
1 2 3 4 5
| "JSON Object" : { "name" : "Lee", "age" : 25, "part" : android }
|
- 위의 JSON을 아래의 객체로 사용할 수 있게끔 변환해주는 라이브러리
1 2 3 4 5
| data class JSON{ var name : String, var age : Int, var part : String }
|
- JSON의 Key와 객체의 변수명은 같아야 한다.
- 물론 타입도 맞춰줘야 한다.
Glide
- 이미지 로드 라이브러리
- 서버에서 받은 이미지
url
을 로드할 수 있게끔 도와준다.
- 이미지 비율에 맞게 사이즈 조정
- Out of memory 방지
- 기본 사용법
1 2 3 4
| Glide.with(Context) .load(서버에서 받아 온 이미지 url) .into(이미지를 받을 뷰 객체)
|
과제
- 복습 : 세미나 시간동안 구현한 것 완성 + 상세보기 화면 구현
- 응용 : 상세보기 화면에서 댓글 구현(댓글 달기, 삭제)
- 심화 : 서버 API가 없으므로 간단한 로그인 & 회원 가입 기능 구현(SharedPreference 사용)
Github
: https://github.com/WooVictory/SOPT_22th_Seminar4_HomeWork