통신의 기본

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의 표현식인 JSONObject 개념으로 바꿔주는 GSON 라이브러리를 함께 사용

Retrofit2

Retrofit2이란?

  • Http REST API 통신을 위한 라이브러리
  • @ annotation 형식을 통해 사용
  • 인터페이스를 통해 쉽게 구현 할 수 있다.
  • JSON을 간단하게 처리할 수 있다.

JSON/GSON

  1. 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
  1. 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(이미지를 받을 뷰 객체)

과제

  1. 복습 : 세미나 시간동안 구현한 것 완성 + 상세보기 화면 구현
  2. 응용 : 상세보기 화면에서 댓글 구현(댓글 달기, 삭제)
  3. 심화 : 서버 API가 없으므로 간단한 로그인 & 회원 가입 기능 구현(SharedPreference 사용)

Github : https://github.com/WooVictory/SOPT_22th_Seminar4_HomeWork