Android의 Http 통신에 대하여

hjseo-dev·2022년 6월 1일
0

Android

목록 보기
12/18

📍 소켓 연결

  • 소켓: 두 프로그램 사이에 일어나는 한쪽의 앤드포인트
  • 클라이언트 & 서버가 특정 포트를 통해 연결 유지 (동영상 스트리밍, 온라인 게임)

📍 http 연결

  • 80번 포트를 사용해 정보를 주고받는 프로토콜
  • 클라이언트가 서버에 헤더/바디로 이루어진 메세지 요청(request)
  • 서버가 처리하여 응답(response)반환
  • connectionless : 통신이 필요할때만 연결 / stateless: 클라이언트가 서버를 기억해야하면 쿠키,세션으로 구분

📍 Rest Api

http기반으로 필요한 자원에 접근하는 네트워트 아키텍쳐

  • 클라이언트와 서버의 분리
  • 무상태(Stateless)
  • 캐시 처리가 가능해야 함
  • 시스템이 계층화(Layered) 되어있어야 함
  • 일관성 있는 인터페이스

📍 Android에서 Http 통신

  • httpClient > HttpUrlConnection > Volley(2013 출시) > 최근 OkHttp 발표

Retrofit

  • OkHttp : Retrofit
  • squareup에서 발표한 라이브러리
  • 인터페이스 생성 > 인스턴스 > 동기/비동기적 구성
  • Ktor : 코틀린을 통해 비동기 서버를 구축
public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();
GitHubService service = retrofit.create(GitHubService.class);

Call<List<Repo>> repos = service.listRepos("octocat");

Volley vs Retrofit -> Retrofit 코드 가독성이 더 좋음..!
구글의 권장 앱 아키텍처에서는 HTTP 통신에 Volley가 아닌 Retrofit을 추천하고 있다

출처 : 냉동코더의 기술블로그

0개의 댓글