💻 Backend

RESTful API에 대한 이해

미미누 2021. 11. 7. 00:17

URI란 무엇일까?

URI: URN + URL을 합친 개념으로 리소스를 식별하는 통일된 방식

 

이름으로 식별하는 경우: URN

위치로 식별하는 경우: URL

 


REST란?

규칙적이지 않은 네이밍룰로 유지보수가 어렵고, 협업 개발자가 코드 이해가 힘들 수 있다.

그래서 도입된 것이 REST이다.

 

즉, HTTP로 정보를 보낼 때, URI를 어떻게 설계하고 어떤 메서드를 사용할 것인지 표준으로 정해놓은 개발자들 사이의 약속이다.

 

API를 설계할 때 아무 규칙없이 개발한다면

 

예시) 멤버를 가져올 때

/get-member-list

/readMembers

 

이런식으로 URI가 달라질 수 있다. 가독성이나 생산성이 떨어져 표준을 정한 것이 REST이다!

 

API는 인터페이스가 핵심인데, API가 사용할 규칙을 만드는 것이다.

API 표준 규칙 중 하나가 REST이고, 이것을 따르는 API를 RESTapi 라고 한다.

 


HTTP 메서드에는 4가지의 메서드가 있는데, 간단히 정리해보도록 하자

 

GET: 리소스를 조회

POST: 리소스를 생성

PATCH/PUT: 리소스를 수정

DELETE: 리소스를 삭제

 

CRUD에 따라 분류하면, GET은 READ, POST는 CREATE, PATCH/PUT은 UPDATE, DELETE는 DELETE로 보면 된다.

 

PATCH랑 PUT의 차이점이 무엇일까?

PATCH는 일부 리소스만 업데이트할 때 사용되고

PUT은 보내는 요청의 모든 값을 업데이트할 때 사용된다.


<REST API 예시는 다음과 같다>

회원 목록 조회 API : GET 메서드

회원가입 API : POST 메서드

회원정보 수정 API: PATCH/PUT 메서드,

회원탈퇴 API: DELETE 메서드

 

회원정보 URI는 한가지 URI로 4가지 API 표현이 가능하다.

즉 핵심은 URI를 통해서 리소스를 표현하고, 리소스 행위는 CRUD 오퍼레이션을 따른다는 것이다.

 

 

API를 호출할 때 정보를 담고 싶다면, 생성한 리소스에 대한 정보도 서버로 전달해야 한다.

이때 메서드/상황 별로 다르다!


<학생 정보 조회 API 예시>

 

GET /students: 모든 학생 정보 조회할 때 쓰는 API

 

특정 학생 이름 정보 전달하려면 필터링해야 가져와야 하는데 QueryString이나 Path Variable 방법을 쓰곤 한다.

 

QueryString 방법: GET /STUDENTS?name=엘리

GET /students?name=엘리&major=컴퓨터공학

 

이런식으로 학생 중 엘리이고, 컴퓨터 공학이라는 것을 분류하여 특정 리소스를 조회 가능하고, 앤드 기호를 통해 여러개 연결 가능하다!

(특정 리소스 조회)

 

Path Variable 방법: GET /students/20

경로 내에 있는 path variable 값을 꺼내 변수에 저장하여 활용할 때 사용한다!