Apple is Apple

일일회고

 

?? 벌써 11월이다 끝나는 날이 2주 밖에 남지 않았다.. 열심히 달려보자..


오늘의 키워드

  • 기술면접 문답

1. 비동기 프로그래밍이 무엇인지, 왜 사용해야하는지 설명해주세요

  • 작업을 하나씩 순서대로 수행하는 행위인 동기적 프로그래밍의 반대 개념으로 여러 작업을 동시에 실행하는 것을 뜻한다.
  •  
  • 이러한 작업은 일반적으로 시간이 많이 걸리는 작업(파일 읽기/쓰기, 네트워크 통신, 데이터베이스 쿼리 등)일 때 유용하다.
  •  
  • 특히 안드로이드는 메인 쓰레드에서 앱의 사용성과 직결되는 UI를 조작하기 떄문에, 메인쓰레드에서 위와 같이 시간이 많이 걸리는 작업을 실행하면 앱은 ANR(Application Not Responding) 에러가 발생 할 것이다.
  •  
  • (동기 처리 하는 중에는 화면에 아무 반응이 없음)이를 통해 성능 향상(대기 시간 동안 다른 작업을 수행하므로 프로그램의 전반적인 성능이 향상), 응답성 향상(사용자는 다른 작업을 수행하면서도 프로그램이 백그라운드에서 긴 작업을 처리) 등 사용자와 상호 작용하는데에 문제 발생을 줄일 수 있다.
  •  
  • 그렇기 때문에 안드로이드에서는 비동기 처리라는 개념이 아주 중요하며, 여러 작업들을 각 쓰레드에 나눠서 UI 쓰레드가 멈추지 않도록 프로그램을 구현해야햔다.
  •  
  • 이런 작업을 하는 동안 대기해야 하는 경우가 많기 때문에, 동기적(synchronous)인 방식으로 프로그램을 작성하면 대기 시간 동안 다른 작업을 수행할 수 없어 프로그램의 성능이 저하될 수 있다.
  •  
  • 여러 로직이 동시 수행되며 다른 로직들의 완료와 관계없이 실행되는 방식이다.

 

 

2. RESTful API를 사용하여 서버와 통신하는 방법에 대해 설명하세요

 

Restful API를 알아보기전에, REST에 대해 먼저 알아야한다.

Rest 란?

  • Representational State Transfer의 약자
  • REST는 기본적으로 웹의 기존 기술과 HTTP Protocol을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
  • REST는 Network상에서 Client와 Server 사이의 통신 방식 중 하나

→ HTTP URL를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다. 즉, 자원을 URI로 표시하고 해당 자원의 상태를 주고 받는 것을 의미한다.

RESTful 이란?

REST를 REST답게 쓰기 위한 방법(누군가 공식적으로 발표한 것은 아님, 즉 REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭)

RESTful의 목적은 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이다.

이제 Restful API를 통해 서버와 통신하는 방법을 알아보자.

  1. URL을 이용한 자원(resource) 식별ex)
    1. @GET /users → 사용자 정보 가져오기
  2. RESTful API에서 각 자원은 고유한 URL을 가지고 있다. 서버에 요청을 보내기 위해서는 요청할 자원의 URL을 알아야 한다.
  3. HTTP 메소드를 사용해서 RESTful API 연결 - 서버에 요청을 보낼 때 사용할 HTTP 메소드를 선택해야 한다. 다음은 주요한 HTTP 메소드이다
    1. GET: 자원을 가져오기 위해 사용.
    2. PUT: 기존 자원을 업데이트하기 위해 사용
    3. DELETE: 자원을 삭제하기 위해 사용
    4. POST: 새로운 자원을 생성하기 위해 사용
  4. HTTP 메소드 연결을 통한 데이터 전달 -
    1. 일반적으로 데이터는 JSON이나 XML형식으로 전송한다. 이 데이터는 HTTP REQUEST의 BODY에 담겨서 전송된다.
    2. 연결 준비가 되었으면 서버에 데이터를 전송한다. (단순히 모든 정보를 받을 경우에는 아무런 데이터 전송 없이 요청을 할 수도 있다.)
  5. 연결 응답 확인
    1. 응답은 HTTP 상태 코드(200 OK, 404 Not Found 등, 상태 코드를 잘 확인해서 연결 상태를 확인해야한다.)와 함께 데이터를 포함할 수 있다.클라이언트에서는 응답 데이터를 받아 파싱해서 사용 할 수 있다.(안드로이드에서는 retrofit의 converter를 사용하면 자동 파싱이 가능하다.)서버는 클라이언트의 요청에 대한 응답으로 데이터를 다시 클라이언트에게 보낸다.
profile

Apple is Apple

@mjjjjjj