코드로 배우는 스프링 웹 프로젝트 - Restful API

jaeeunxo1·2020년 11월 16일
0

Spring

목록 보기
5/6
post-thumbnail

Restful API

🔑 최근 채용공고에 보면 대부분 Restful API 사용해 본 개발자를 찾고있다.
그래서 어떤 장점이 있는지, 왜 사용하는지 공부하기로 결정했다.

1. Restful(Representational State Transfer) API

웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다. 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 경합해서 원하는 작업을 지정한다. Restful API 정의참고


2. REST 방식

웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일입니다.

URI : 간단하게 말해서 '자원의 식별자' 라는 의미로 사용된다. 흔히 URL(Uniform Resource Locator)과 URI(Uniform Resource Identifier)를 같은 의미로 사용하는 경우가 많다.
엄밀하게 말하면 URL은 URI의 하위 개념이기 때문에 혼용해도 무방하다.

3. RESTful API 장점 참고

  1. Uniform
    HTTP 표준에 따르면, 특정 플랫폼이나 언어에 종속되지 않고 사용이 가능하다. URI로 지정한 리소스에 대한 조작이 가능한 아키텍처 스타일을 의미한다.

  2. Stateless
    Stateless 구조는 서버의 응답이 클라이언트와의 세션 상태와 독립적이다.
    따라서 서버는 단순히 요청이 오면 응답을 보내는 역할만 수행하고, 세션관리는 클라이언트가 책임진다.

  3. 클라이언트-서버 구조
    REST 서버는 API 제공, 클라이언트는 사용자 인증이나 세션, 로그인 등을 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 의존성이 줄어들고, 역할이 명확해진다.

  4. Self-descriptiveness (자체 표현 구조) : 동사(Method) + 명사(URI) 로 이루어져있어 어떤 행위를 하는지 REST API 메시지만 보고도 어떤 이를 쉽게 이해할 수 있다.

4. RESTful API 단점 참고

  1. 안티패턴으로 작성 될 가능성이 있다.
    안티패턴이란 REST API의 특징을 이해하지 못하고 REST 사상에 어긋나는 패턴을 적용한 API들을 말한다.

  2. 표준규약이 없다.
    표준이 없다 보니 성공적인 REST API 사례를 근거로 암묵적인 규칙이 생기기도 하는데 Google, Netflix, Amazone 등의 기업들이 REST의 표준역할을 하고 있습니다.

  3. PUT, DELETE 는 특정 브라우저에서 사용이 제한된다.
    사용할 수 있는 메서드가 4가지 밖에 없다. 구형 브라우저에서 아직 지원하지 못하는 부분이 있다

5. Restful API 규칙 참고

  1. URI는 정보의 자원을 표현해야 한다.

  2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현한다.

6. REST 방식을 위한 ResponseEntity

ResponseEntity데이터와 함께 HTTP 헤더의 상태 메시지 등을 같이 전달하는 용도로 사용한다. REST 방식으로 호출하는 경우는 뷰가 아니라 데이터 자체를 전송하는 방식으로 처리되기 때문에 데이터를 요청한 쪽에서는 성공적으로 데이터가 전달됐는지 구분할 수 있는 상태를 제공해준다.

HttpStatus.OK : 성공적으로 처리했다는 200 코드와 데이터를 전송한다.

HttpStatus.BAD_GATEWAY : 서버가 폭주하는 등의 이유로 과부하되었을 경우, 사용자 브라우저에 이상이 있거나 잘못된 네트워크 연결을 했을 경우

HttpStatus.INTERNAL_SERVER_ERROR : 서버가 처리 방법을 모르는 상황이 발생했습니다. 서버는 아직 처리 방법을 알 수 없습니다.

profile
Backend 🖤

0개의 댓글