본문 바로가기

Spring이론

REST API

반응형

이번에 처음으로 서버를 갖고 있는 안드로이드 앱을 개발하게 되었습니다.

완전 처음부터 개발하다보니 접근방식조차 알 수 없어서 하나하나 공부하게 되었습니다.

모바일 앱 서버를 구현하는데 있어서 첫 게시물은 REST에 대하여 소개하고자 합니다.

 

내용의 경우 어라운드 허브 슈튜디오( https://youtu.be/rHJgMRimJ4Y ) 를 참조하였습니다.

1. REST

REST란 Representational State Transfer의 약자로 HTTP URI를 통해 자원을 명시하고

자원의 이름으로 구분하여 해당 자원의 상태를 HTTP Method를 통해 교환하는 것을 의미합니다.

 

이러면 HTTP Method가 무엇인지 의구심이 드는데

 

HTTP Method는 CRUD의 방식으로 대표적으로 

Create = PostMapping( 데이터 생성)

Read  = GetMapping(데이터 조회)

Update = PutMapping(데이터 수정)

Delete = DeleteMapping(데이터 삭제) 

 

이렇게 있지만 자세한 내용은 주후에 다루도록 하겠습니다.

 

결국 REST에 대하여 요약하자면 REST는 sever와 client의 통신 방식 중 하나입니다.

 

2. REST의 특징

(1) Sever - Client 구조

항상 자원이 있는쪽이 sever이고 요청하는 쪽이 client로 

가장 중요한 포인트로 sever와 client는 항상 독립적으로 분리되어 있어야 합니다.

(2) Stateless

요청간에 client 정보가 sever에 저장되지 않습니다.

또한 sever는 각각의 요청을 완전히 별개의 것으로 인식하고 처리합니다.

 

이는 서버의 부담감이 줄어들기 때문에 서버의 퀄리티가 좋아진다고 볼 수 있습니다.

(3) Cacheable

HTTP 프로토콜을 그대로 사용하기 때문에 HTTP의 캐싱기능이 적용됩니다.

대량의 요청을 효율적으로 처리하기 위해 캐시를 사용합니다.

 

* 캐싱이란 일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층입니다.

 

(4) Layered System

client는 sever의 구성과 상관없이 REST API sever로 요청합니다.

여기서 sever의 경우 다중 계층으로 수성될 수 있습니다.

 

*API란 응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스입니다.

API를 사용하면 내부 구현 로직을 알지 못해도 정의되어 있는 기능을 쉽게 사용할 수 있습니다.

 

(5) Code on Demand(Optional)

요청을 받으면 sever에서 client로 code 또는 script(로직)을 전달아여 client의 기능을 확장합니다.

 

(6) Uniform Interface

데이터가 표준 형식으로 전송되기 위해 구성 요소간 통합 인터페이스를 제공합니다.

HTTP 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하게 설계됩니다.

 

 

이러한 REST를 안드로이드 앱개발에 이용하기 위해 본격적으로 REST API에 대하여 알아보겠습니다.

 

3. REST API 

REST API란 REST아키텍쳐의 조건을 준수하는 프로그래밍 인터페이스를 뜻합니다.

여기서 REST에 대하여 조금은 아시는 분들은 restful이라는 말을 들어보셨을 겁니다.

 restful이란 REST의 설계규칙을 잘 따른 경우를 restful이라고 합니다. 별 다른 뜻은 아닙니다.

 

그렇다면 위에서 말한 REST의 설계 규칙은 무엇일까요?

 

4. REST API 설계규칙

1)  웹 기반의 REST API를 설계할 때는 URI를 통해 자원을 표시해야 합니다.

저 같은 경우 https://www.pinlib/ 와 같은 예시 주소에서

user에 대한 resource를 이용하자는 의미로 @GetMapping을 사용해서

@GetMapping("user")

http://www.pinlib/user 에 접근하였습니다.

 

*@GetMapping에 대한 방식은 추후에 작성하겠습니다.

 

2) 자원에 대한 조작은 HTTP Method(CRUD)를 통해 표현해야 합니다.

이에 대해서는 추후에 자세히 이야기 하겠습니다.

 

3) 메시지를 통한 리소스 조작

HEADER를 통해 context-type을 지정하여 데이터를 전달합니다.

데이터를 전달하는 형식으로는 HTML, XML, JSON, TEXT가 있습니다.

저와 같은 경우 모바일을 사용하기 때문에 주로 HTML보다는 XML을 사용할 예정입니다.

 

여기까지가 REST API에 대한 개념 요약이었습니다.

보다 자세한 내용을 알고 싶으시다면 위에 참조한 유튜브를 시청하시는 것을 추천드립니다.

반응형

'Spring이론' 카테고리의 다른 글

DAO생성해서 간단한 CRUD 구현하기  (0) 2023.03.28
Spring 개념 부족을 해결하기 위해서  (0) 2023.03.28
안드로이드에서 서버와 DB연동을 위한 Spring boot 구조  (0) 2023.02.26
MVC 패턴  (0) 2023.02.25
retrofit2  (0) 2023.02.23