Computer Science/Network

[Network] REST API와 RESTful

강잇 2022. 8. 28. 22:13

REST

REST란?

  • REST란 Representational State Transfer의 약자로 HTTP 네트워크 상의 리소스를 정의하고 해당 리소스를 URI라는 고유의 주소로 접근하는 방식을 의미한다.
    • 리소스(Resource) : REST에서 의미하는 리소스란 HTTP 통신을 통해 주고 받을 수 있는 모든 것을 의미한다.(데이터, 문서, 이미지, 동영상 등)
    • URI(Uniform Resource Identifier) : 네트워크 상에 있는 특정 리소스를 식별하는 통합 자원 식별자를 의미한다.
  • REST는 월드 와이드 웹(www)과 같은 분산 하이퍼 미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
    • 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
  • 즉, HTTP 프로토콜을 이용하여 특정 리소스를 식별할 수 있는 고유한 주소를 통해 HTTP Method를 이용하여 작업을 처리하는 방식을 의미한다.

REST 구성 요소

자원 (Resource)

  • 웹 서버가 관리하는 모든 것을 의미하며, URI를 통해 특정 리소스를 식별할 수 있다.
  • Resource는 Collection과 Element로 구분할 수 있다.
    • Collection : 정보 전체를 식별하는 URI를 의미한다.
      • localhost:8080/users -> users라는 정보 전체를 식별함.
    • Element : 하나의 특정 정보 식별하는 URI를 의미한다.
      • localhost:8080/users/1 -> users라는 전체 정보 중 1의 id를 가진 user정보를 식별함.

자원 조작 (Verb)

  • HTTP 프로토콜의 Method를 사용하여 자원을 조작(CRUD)한다.

표현 (Representation)

  • Client가 자원의 상태를 조작하는 요청을 하면, Server는 그에 해당하는 적절한 응답을 보낸다.
    • Client -> 개인 정보 수정 요청 -> Server -> 수정된 개인 정보 응답(JSON)
  • 자원은 보통 TEXT, JSON, XML등 여러 형태 중의 하나로 표현된다.

HTTP  Method

HTTP Verb Action - CRUD 설명 페이로드 유무 예시
POST Create 리소스 생성 O 회원 정보 생성
GET Read 리소스 조회 X 회원 정보 조회 
PUT Update 리소스 전체 수정 O 회원 정보 수정 
PATCH Update 리소스 일부 수정 O 회원 비밀번호 변경 
DELETE Delete 리소스 삭제 X 회원 정보 삭제

REST의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 별도의 인프라를 구축할 필요가 없다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다. (ex. 웹 브라우저, 모바일, 웹서버 등)
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메세지가 의도하는 바를 명확하게 나타내므로 쉽게 파악할 수 있따.
  • 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 존재하지 않는다.
  • HTTP Method가 제한적이다.

REST API

REST API란?

  • REST API란 REST의 방식을 통해 리소스에 접근하기 위한 서비스 API를 지칭한다.

REST API 설계 규칙

  • '/'는 계층 관계를 나타내는 데에 사용한다.
    • https://wonkang.tistory.com/category/Java/Java-basic
  • URI의 마지막이 '/'로 끝나지 않아야 한다.
    • http://api.canvas.com/shapes/polygons/quadrilaterals/squares
  • 동사보다는 명사를 사용하며, 단수형 보다는 복수형을 사용한다.
  • URI 경로에서는 소문자를 사용한다.
  • 가독성을 위해 공백 또는 구분이 필요한 경우 언더스코어(_)가 아닌 하이픈(-)을 사용한다.
    • http://api.example.com/blogs/guy-levin/posts/this-is-my-first-pos
  • 파일 확장자는 URI에 포함하지 않는다.
    • http://api.college.com/students/3248234/courses/2005/fall.json (X)
  • 리소스 간에 연관 관계가 있는 경우
    • /리소스명/리소스ID/관계가 있는 다른 리소스 명

RESTful

RESTful이란?

  • RESTful이란 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
    • REST API를 제공하는 웹 서비스를 RESTful하다고 할 수 있다.
    • REST 원리를 따르는 시스템은 Restful이란 용어로 지칭된다.

RESTful의 목적

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것.
  • RESTful한 API를 구현하는 근본적인 목적은 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것으로, 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.

Reference

https://docs.microsoft.com/ko-kr/azure/architecture/best-practices/api-design#what-is-rest

 

웹 API 디자인 모범 사례 - Azure Architecture Center

플랫폼 독립성과 서비스 진화를 지원하는 웹 API 설계를 위한 모범 사례를 알아봅니다.

learn.microsoft.com

https://dzone.com/articles/7-rules-for-rest-api-uri-design-1

 

7 Rules for REST API URI Design - DZone Integration

URIs, or Uniform Resource Identifiers, should be designed to be readable and clearly communicate the API resource model. These rules will help you succeed.

dzone.com

https://itvillage.tistory.com/35

 

RESTful API의 URL 작성 규칙

REST API란? REST(Representational State Transfer)는 HTTP 네트워크 상의 리소스(Resource, 자원)를 정의하고 해당 리소스를 URI라는 고유한 주소로 접근하는 접근 방식을 의미하며, REST API란 REST 방식을 통해서

itvillage.tistory.com

https://sidepower.tistory.com/408

 

REST와 REST API란 . RESTful 개념 쉽게 이해하기

주변에서 REST가 뭐냐고 물어보면 명확하게 설명하기가 힘든 거 같아 정리해보았습니다. ■ REST Representational State Transfer의 약자입니다. Representational → 표현, 묘사 State → 상태 Transfer → 전송 단

sidepower.tistory.com

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

 

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io