IT Study/CS

REST API와 CRUD

짹짹체유 2025. 2. 2. 10:49

 

 

회사에서 맡게 될 업무에서 REST API를 활용할 것 같아서 미리 이론들을 학습해보고자 한다.

 

 

출처: postman blog

 

 

REST API는 REST 아키텍처 스타일의 설계 원칙을 준수하는 API이다.

 

REST와 API를 나눠서 살펴보면,

REST: Representational State Transfer의 약자로, 자원을 명시해서 자원의 상태를 주고 받는 것을 의미

API: 컴퓨터의 기능을 실행시키는 방법을 의미

 

REST API도 컴퓨터의 기능을 실행시키는 명령이지만, 남의 컴퓨터를 실행시킴.

특정 기술을 의미하는 것이 아니라 HTTP를 통해서 기계들이 통신할 때 HTTP가 가진 잠재력을 최대한 이용할 수 있도록 유도하기 위한 사례

 

 

REST API의 구성요소

  • Resource: 데이터들
  • Resource는 URI를 통해서 표현됨
  • 데이터 전체를 식별하고 싶다면 Collection으로 표현
  • 개별 데이터는 Element으로 표현
  • Element가 모여서 Collection이 됨

 

 

 

  • URI는 정보를 식별하는 이름일 뿐, 정보를 가공할 필요가 있으며, 가공 방법이 CRUD method
  • REST API는 HTTP를 이용하기 때문에 HTTP가 가지고 있는 method를 이용함

 

정리하면,
REAT API는
1. HTTP를 통해서 자원( Resource )을 명시하고
2. HTTP Method ( POST, GET, PUT, DELETE, PATCH 등)를 통해서 CRUD 동작을 적용하는 것


" REAT API는 기계와 기계가 통신할 때
Resource는 URI로, 행위는 HTTP Method로, 결과는 응답 코드로 HTTP를 활용 "

 

 

※ CRUD Method
컴퓨터 소프트웨어가 갖는 기본적인 데이터 처리 기능을 묶어서 일컫는 말
Create: 데이터 생성 → POST
Read: 데이터 조회  → GET
Update: 데이터 수정  → PUT(전체 변경), PATCH(부분 변경)
Delete: 데이터 삭제  → DELETE

 

 

* GET의 두가지 방법

{
	"topics": [
    	{
        	"id": 1,
            "title": "REST",
            "body": "Hi .. "
        },
        {
        	"id": 2,
            "title": "API",
            "body": "Hi .. "
        }
    ]
}

 

1. Collection 읽기

fetch('topics', {method: 'GET'})
.then(
	function(responses){
    	return response.json()
    }
)

 

2. Element 읽기

fetch('topics/1', {method: 'GET'})
.then(
	function(responses){
    	return response.json()
    }
)

 

- Collection 뒤에 / 와 Element id를 작성하면 된다.

 

 

 


 

 

REST 설계 원칙 6가지 (REST 아키텍처 제약 조건)

 

1. 균일한 인터페이스

- 동일한 리소스에 대해 모든 API 요청은 동일하게 표시되어야 함

- 사용자의 이름 또는 이메일 주소와 같은 동일한 데이터가 하나의 통합 리소스 식별자(URI)에만 속하도록 해야 함 

 

2. 클라이언트-서버 분리

- 클라이언트와 서버 애플리케이션은 독립적이어야 함

- 클라이언트 애플리케이션이 알아야 하는 유일한 정보는 요청된 리소스의 URI

- 서버 애플리케이션은 HTTP를 통해 요청된 데이터에 클라이언트 애플리케이션을 전달

 

3. 무상태

- 각 요청에는 처리에 필요한 모든 정보가 포함되어야 함

- 서버 애플리케이션은 클라이언트 요청과 관련된 데이터를 저장할 수 없음

 

4. 캐시 가능성

- 클라이언트나 서버 측에서 리소스를 캐시할 수 있어야 함

- 서버 응답에는 전달된 리소스에 대한 캐싱이 허용되는지 여부에 대한 정보도 포함되어야 함

 

5. 계층화된 시스템 아키텍처

- 호출과 응답이 서로 다른 계층을 거침

- 클라이언트와 서버 애플리케이션이 서로 직접 연결된다고 가정하지 않음

- 클라이언트와 서버가 최종 애플리케이션과 통신하는지 중개자와 통신하는지 알 수 없도록 설계해야 함

 

6. 코드 온디맨드 (Option)

- 일반적으로 정적 리소스를 전송하지만 경우에 따라서 응답에 실행 코드가 포함될 수 있으며 이런 경우는 온디맨드 방식으로만 실행되어야 함

 

 

 

 

 

참고자료

https://blog.postman.com/rest-api-examples/

https://www.ibm.com/kr-ko/topics/rest-apis

https://www.youtube.com/watch?v=PmY3dWcCxXI

반응형