개발/http, server

API? REST API? 란 무엇인가.

prpn97 2023. 4. 17. 23:53

첫 프로젝트를 진행하며 api 명세서를 작성하는 것으로 처음을 장식하려 한다. 

그런데 시작한다고 하지만 어떻게, 심지어 무엇을 해야하는지도 모르겠다. 

그래서 먼저 api가 무엇인지 알아보도록 하자. 

 

API란 ?  

"Application Programming Interface"의 약자로,

다른 프로그램이나 서비스에서 사용할 수 있도록 제공되는 인터페이스이다.

즉, 백엔드에서 제공하는 API는 다른 프로그램이나 서비스가

백엔드에 있는 데이터나 기능에 접근하고 사용할 수 있도록 해준다.

 

예를 들어, 소셜 미디어 앱에서는 백엔드 API를 사용하여

사용자 정보, 게시물, 친구 목록 등을 가져오고 업데이트한다.

이를 통해 소셜 미디어 앱은 사용자가 앱에서 수행하는 작업에 대한

데이터를 처리하고 저장하는 기능을 수행할 수 있다.

따라서, 백엔드 프로젝트를 만들 때 API는 매우 중요한 구성 요소 중 하나이다.

API를 설계하고 구현하여 다른 프로그램이나 서비스가 쉽게 사용할 수 있도록 만들어야 한다.

이를 위해서는 API 문서를 작성하고, API 엔드포인트를 정의하고,

요청과 응답 형식을 지정해야 한다.

 

대충 기능과 관련된 것인 것 같은데.. 아직 감이 잘 안온다. 

이제 조금 틀을 갖추고 어떻게 구현할 것인지 다루어보고자 한다. 

 

REST API 

REST는 Representational State Transfer의 약자이다. 

역시 어렵다. 내가 이해하기로는, 간단하게는 api를 전달하는 방법중 하나라고 이해하고 있다. 

 

일반적으로 REST API라고 하면 HTTP를 통해 CRUD를 실행하는 API를 뜻한다.

CRUD는 Create, Read, Update, Delete의 약어로,

데이터의 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)를 일컫는다.

CRUD는 데이터베이스 시스템에서 가장 기본적인 데이터 조작 작업을 의미한다.

따라서, 대부분의 소프트웨어 시스템에서는 CRUD 작업이 핵심적인 기능으로 포함되어 있다.

 

그런 CRUD를 기반으로 REST API는 아래와 같이 작업을 수행한다. 

GET, POST, PUT, DELETE, PATCH를 통해 행위를 결정하며,

JSON 혹은 XML을 통해 데이터를 주고 받는다.

 

그렇다면 또 GET부터 차근차근 알아봐야겠다.

GET

- 서버로부터 리소스를 요청한다.
- 요청한 데이터가 HTTP 응답 본문에 포함되어 반환된다.
- 주로 데이터 조회에 사용된다.
- GET 메서드는 요청 본문이 없으며, 요청 URL에 매개변수를 전달할 수 있다.

ex)로그인, 사용자 정보 조회, 상품조회 등

POST

- 서버에 새로운 리소스를 생성하거나, 기존 리소스를 수정한다.
- 요청 본문에 전달되는 데이터를 사용하여 서버에서 처리한다.
- 주로 데이터 생성에 사용된다.

ex) 회원가입, 주문, 장바구니 담기 등

PUT

- 서버에 새로운 리소스를 생성하거나, 기존 리소스를 수정한다.
- 요청 본문에 전달되는 데이터로 요청한 리소스를 대체한다.
- 주로 데이터 수정에 사용된다.

*name,age,gender의 정보가 있다고 할 때,

put{name:~~,age:~~,gender:~~}를 해서 3개의 정보를 수정한다고 가정해보자.

그러면 3개의 정보가 바뀔 것이다.

그런데 put{name:~~} 으로 입력하면 name만 바뀌는 것이 아니라,

나머지 age, gender의 값을 입력하지 않았기 때문에 null값으로 변한다. 

PATCH

- PUT과 유사하지만, 요청 본문에 전달되는 데이터로 요청한 리소스의 일부만 수정한다.
- 주로 데이터 부분 수정에 사용된다.

*위 put과는 다르게 한 개의 값만 수정하더라도 null값으로 변하지 않고,

수정한 값만 변하게 된다. 

그렇기에 개인정보 수정, 상품 수정 등의 내용을 예시로 들 수 있겠다. 

DELETE

- 서버에서 리소스를 삭제한다.
- 주로 데이터 삭제에 사용된다.

ex) 개인정보 삭제, 상품 삭제 등

 

위 내용을 토대로 rest api를 작성해보려 한다. 

 

728x90