TIL Day51 REST API/ RESTful API

Colleen·2023년 5월 8일
0

REST API 이야기 하기전 OOP는?

object-oriented programming(OOP)의 약자로 객체의 관점에서 프로그래밍하는 것을 의미한다.

  • 프로그래밍 세계의 철학으로 사람이 이해하는 방법을 흉내한 방법론 입니다.
  • 객체는 유기적으로 연결하여 프로그래밍을 합니다.

Rest API / RestFul API

REST(REpresentational State Transfer) :
"REpresentational State Transfer" 의 약자, 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다.
즉, `자원(resource)의 표현(representation)에 의한 상태 전달`!

  • 자원 : 해당 소프트웨어가 관리하는 모든 것 (문서, 그림, 데이터, 해당 소프트 웨어 자체 등)
  • 표현 : 그 자원을 표현하기 위한 이름 (DB의 학생 정보가 자원이면, ‘students’를 자원의 표현으로 정함)
  • 상태 전달 : 데이터가 요청되는 시점에 자원의 상태를 전달한다. (JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적)

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에

웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일입니다.

REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나입니다.

REST의 개념
어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI(Resource)로 GET, POST 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태(Representation of Resource)로 표현됩니다.

여기서 잠깐! URL과 URI의 차이점은?

URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미합니다.
반면 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로,
URI는 URL을 포함하게 됩니다. URI가 URL보다 포괄적인 범위라고 할 수 있습니다.

REST의 구성요소

  1. 자원(Resource) - URI
  • 모든 자원에는 고유한 ID가 존재하며 이 자원은 Server에 존재합니다.
  • 자원을 구별하는 ID는 HTTP URI입니다.
  • Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청합니다.
  1. 행위(Verb) - Method
  • HTTP 프로토콜의 Method를 사용합니다.
  • HTTP 프로토콜은 다음과 같습니다.
GETRead : 정보 요청, URI가 가진 정보를 검색하기 위해 서버에 요청
POSTCreate : 정보 입력, 클라이언트에게 서버로 전달하려는 정보를 보냄
PUTUpdate : 정보 업데이트, 주로 내용을 갱신하기 위해 사용(데이터 전체를 바꿀 때)
PATCHUpdate : 정보 업데이트, 주로 내용을 갱신하기 위해 사용(데이터 일부만 바꿀 때)
DELETEDelete : 정보 삭제 (안정성 문제로 대부분 서버에서 비활성화함)
  1. 표현(Representation of Resource)
  • Client와 Server가 데이터를 주고받는 형태로 JSON, XML, TEST, RSS 등이 존재합니다.
  • 일반적으로 JSON, XML을 통해서 데이터를 주고 받습니다.

REST API

  • REST의 특징을 기반으로 서비스 API를 구현한 것입니다.

REST API 특징

  • 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다는 것입니다.

REST API의 설계 규칙

  1. URI는 명사를 사용(리소스명은 동사가 아닌 명사를 사용해야 합니다.)
  • 예) 다음과 같은 동사는 안됨!!
    • /updateUser
    • /deleteUser
  1. 슬래시( / )로 계층 관계를 표현합니다.
  2. URI 마지막 문자로 슬래시 ( / )를 포함하지 않습니다.
  3. 밑줄( _ )을 사용하지 않고, 하이픈( - )을 사용합니다.
  4. URI는 소문자로만 구성합니다.
  5. HTTP 응답 상태 코드를 사용합니다.
  • 클라이언트는 해당 요청에 대한 실패, 처리 완료, 잘못된 요청 등에 대한 피드백을 받아야 합니다.
  1. 파일확장자는 URI에 포함하지 않습니다.
    예) 다음 예시처럼 사용하면 안됨!
    - http://hanghae99.gmail.com/restapi/10/photo.jpg

REST API와 RESTful API의 차이

RESTful API :

REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API 라고 합니다.

즉, REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭됩니다.

💛 REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약합니다.
  • 첫 번째, URI는 정보의 자원을 표현해야 한다.
  • 두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다.
    • 행위(Method)는 URI에 포함하지 않는다.

중요하니까 한 번 더~
REST API는 한마디로 URI는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method에 명시한다는 것이다!!!

profile
이상한 나라의 개발하는 예대생

0개의 댓글