[TIL]Android REST

mandoofu·2024년 10월 7일

안드로이드

목록 보기
13/20
post-thumbnail

REST

  • REST 정의 : 인터넷자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미

  • 자원(resource)의 표현(representation) 에 의한 상태 전달

    • resource
    • 정적문서(html/css/js), CRUD를 수행 할 Operation
  • representation

    • DB의 영화정보들을나타낼 때, movies 라는 의미의 표현(REST)을 사용
    • state transfer
      • 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달
      • Query String Request, JSON,XML을 통해 데이터를 주고 받는 것이 일반적
    • 웹의 기존 기술과 HTTP를 기존대로 활용
  • HTTP CRUD Operation

    • Create : 생성(POST)
    • Read : 조회(GET)
    • Update : 수정(PUT)
    • Delete : 삭제(DELETE)
    • HEAD: Entity는 없이 header 정보만 조회(HEAD)

REST API

  • REST API Resource 4요소
    • Document : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념
    • Collection : 서버에서 관리하는 디렉터리(Context) 리소스
    • Store : Client입장의 resource저장소
    • Controller : Client에서 Server의 Function 실행 동작을 의미(동사사용)

Restful

  • RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어

    • ‘REST API’를 제공하는 웹 서비스를 ‘RESTful하다’ 라고 한다
    • REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭
  • RESTful의 목적

    • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
    • RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이니, 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다
  • RESTful 하지 못 한 경우

    • CRUD 기능을 모두 POST로만 처리하는 API
  • Json Serialization

    • Json-> Kotlin 객체 : Json 역직렬화
      • Backend -> 앱: Http Response
    • Kotlin -> Json 파일 : Json 직렬화
      • 앱 -> Backend : Http Request
  • Moshi

  • dependencies

dependencies {
implementation("com.squareup.moshi:moshi-kotlin:1.15.1")
}
  • http와의 연결상태는 기본 stateless 이다. 이때 서버가 클라이언트에게 보내는 작은 정보의 조각이 쿠키이고 쿠키에는 쿠키가 어디서 왔는지 또 언제까지 유효한지등의 정보가 담겨있다.

  • ResponseHeader의 CookiesSettings

    • Set-Cookie:NAME=VALUE
    • expires=DATE
    • path=/webContext
    • domain=*.kb.co.kr;secure
  • SessionCookie

    • 쿠키는 요청이 동일한 HTTPClient왔는지 아닌지를 판단할 때 사용
    • 사용자의 로그인 상태를 유지

0개의 댓글