본문 바로가기

안드로이드 프로그래밍/kotlin

[Kotlin] 네트워크 통신 방식, JSON

네트워크 


2대 이상의 컴퓨터가 연결되어 데이터를 주고받는 통신 체계
인터넷은 전송할 데이터를 HTTP 라는 프로토콜로 만들어진 패킷(바구니)에 담은 후에 전송 프로토콜인 TCP/IP 를 사용하여 수신 측에 전달하는 구조로 만들어져 있다. 

 

 

 

 

 

 

 

 

 

 

 

HTTP


네트워크를 이해하기 위해서는 먼저 두 가지 개념을 알아야 한다 

1. 프로토콜

2. 패킷

 

 

프로토콜

컴퓨터 간의 데이터를 전송하는 방식이 서로 다르면 데이터를 주고받을 때마다 각 컴퓨터의 전송방식에 맞게 코드를 수정해야 한다. 프로토콜은 이런 전송 방식을 표준화하여 어떤 컴퓨터와도 동일한 방식으로 데이터를 주고받을 수 있게 만들어진 통신 규약이다.

인터넷은 TCP/IP 로 동작하는데 이 TCP/IP 가 프로토콜이다.
웹은 HTTP 라는 프로토콜을 사용하는데, 웹 서버와 웹 브라우저가 이 규약에 따라 데이터를 주고받는다. 

 

패킷

데이터가 전송되는 실제 단위

 

 

이렇게 웹 브라우저의 주소창에 주소를 입력할 때 주소 앞에 'http:// ~ ' 라고 접두어를 붙이는 이유가 요청하는 주소의 데이터를 HTTP 프로토콜로 처리하기 때문이다.

 

HTTP 는 웹상의 서버와 클라이언트인 웹 브라우저와의 데이터 통신이 가능하도록 설계된 표준 규약이다.

클라이언트가 서버에 데이터를 요청하는 요청(Request) 메시지와 클라이언트가 요청한 데이터를 응답하는 응답(Response) 메시지로 구성된다.

 

 

URL 의 구조

 

 

 

 

 

 

 

HTTP 의 요청방식


HTTP 메서드는 클라이언트의 요청 방식을 정의하고 서버의 리소스에 대한 행위를 지정한다. 

 

 

 

 

GET 메서드는 주로 서버의 정보를 조회하는 용도로 사용

POST, PUT 메서드는 서버에 데이터를 저장하거나 수정하기 위한 용도로 사용

 

 

 

 

 

 

HttpURLConnection


안드로이드는 HTTP로 데이터 통신을 하기 위해서 HttpURLCoeenction 클래스와 HTTPS 사양으로 확장한 HttpURLCoeenction 클래스를 지원한다.

HTTPS 는 HTTP 에서 보완이 강화된 버전의 프로토콜이다.

 

 

 

 

 

레트로핏 데이터 통신 라이브러리


조금 편하게 적은 양의 코드로 데이터 통신을 할 수 있게 도와주는 레트로핏(Retrofit) 라이브러리를 사용해보자

 

레트로핏을 위한 준비사항

(1) 데이터를 가져올 곳(웹 사이트 또는 API 서버) 결정

(2) 어떤(표준 프로토콜) 데이터를 사용할 것인지 데이터의 형식을 결정

 

 

* 사용자 정보 API 를 무료로 제공하는 Github API 

https://developer.github.com/v3 

 

GitHub REST API - GitHub Docs

To create integrations, retrieve data, and automate your workflows, build with the GitHub REST API.

docs.github.com

* 간단한 데이터 구조를 가진 JSON

JSON 은 데이터 교환에 사용하는 표준 데이터 형식으로 사람과 컴퓨터가 이해하기 쉬우면서 데이터 용량이 적다는 장점이 있다. 

네트워크 관점에서 JSON 은 HTTP 와 같은 데이터 프로토콜에서 바디 영역에 정의된 데이터 통신을 위한 개방형 규격이다.

 

 

 

JSON의 구조 

1. JSON 오브젝트

2. JSON 데이터

3. JSON 배열

 

 

 

1 JSON 오브젝트

JSON 객체는 여는 중괄호로 시작해 닫는 중괄호로 끝난다.

{중괄호 사이에 JSON 데이터가 표현된다 }

 

2. JSON 데이터

JSON 오브젝트인 중괄호 {} 사이에 "데이터 이름" : 값 의 형식으로 표현되며 이름은 항상 쌍따옴표("")로 감싸야하고 이름과 값의 사이는 콜론(:)으로 구분한다.

데이터가 여려 개일 경우 쉼표(.) 로 구분한다.

{"데이터 이름" : "값", "데이터 2 이름" : "값2" }

데이터의 값은 문자, 숫자, 불린, null ,  JSON객체, JSON배열 이 될 수 있다.

 

3. JSON 배열

JSON 배열은 JSON 오브젝트의 컬렉션으로 여는 대괄호로 시작해 닫는 대괄호로 끝난다.

배열에 입력되는 JSON오브젝트가 복수 개일 경우 쉼표로 구분한다.

[ {"데이터1 이름" : "값"}, {"데이터1 이름" : "두 번째 값" , "데이터2 이름" : 123} ]

 

 

 

 

 

 

 

서울 공공 도서관 위치 정보 어플 만들기 실습하면서 공부해봅시다~

728x90
반응형