REST API, RESTful Webservice 등 웹개발에 중에서도 Backend 개발에 관심이 있다면 한 번이라도 들어 봤을 내용입니다.
그러면 도대체 REST는 뭘까요? 일단 REST의 약자는 아래와 같습니다.
REpresentational State Trnasfer
REST API의 목적은 간단합니다. 바로 통신 혹은 소통을 위해서 존재합니다.
그럼 누구와의 소통일까요? 바로 클라이언트와 서버 사이의 소통을 위해 존재합니다.
여기서 클라이언트는 우리가 흔히 알고 있는 웹페이지 혹은 웹사이트 같은 겁니다.
그러면 여기서 좀 더 구체적으로 클라이언트와 서버의 소통 방식에 대해 말씀드리겠습니다.
클라이언트와 서버가 소통하는 방식은 두 가지 있습니다
첫 번째는 Request 즉 요청입니다.
두 번째는 Response 즉 응답입니다.
이 두가지로 서버와 클라이언트는 모든 소통을 끝냅니다. 간단하죠?
그러면 모든 소통은 REST API로만 해야 할까요? 아닙니다.
하지만 이 소통에 있어 REST API는 강점을 드러냅니다.
첫 번째, Simple 간단하고 Standardize 규격화 돼있습니다.
두 번째 , Scalable 확장과 축소해도 문제가 생기지 않고 Stateless 독립적인 호출이 가능합니다.
세 번째, Performance 성능이 뛰어나고 Caching 캐시를 사용할 수 있습니다.
그럼 REST API를 활용한 Request는 어떠한 형태일까요?
기본적으로 Request는 아래와 같이 네 가지로 구성 돼있습니다.
Header | 클라이언트의 서버를 이용하기 위한 인증 정보 |
Operation | C.R.U.D 중 하나 |
End point | Request의 목적지 |
Parameters | 서버에서 습득해야하는 데이타에 대한 정보 |
여기서 C.R.U.D는 Request를 통해 클라이언트가 서버에게 부탁하는 행동입니다. C.R.U.D는 아래와 같습니다.
1. Create 아님 POST method라 부르며 서버에 새로운 데이터를 추가합니다.
2. Read 아님 GET method라 부르며 서버에서 원하는 데이터를 읽어 옵니다.
3. Update 아님 PUT method라 부르며 기존 데이터를 수정하고 기존 정보가 없을 시 추가합니다.
4. Delete 아님 Delete method라 부르며 서버에 있는 특정 데이터를 삭제합니다.
그러면 Response는 어떨까요? Response는 JSON 형태로 반환됩니다. (추후 JSON에 대한 설명을 따로 할 예정입니다.)
JSON은 Python의 Dictionary형태와 유사합니다. 그래서 아래와 같이 생겼습니다.
// 데이터가 하나일 경우
{"데이터 종류": "데이터 값"}
// 만약 데이터 타입이 숫자일 경우
{"데이터 종류": 숫자}
// 만약 해당하는 데이터가 여러개일 경우
[{"데이터 종류": "데이터 값"},{"데이터 종류": "데이터 값"},{"데이터 종류": "데이터 값"}]
REST API를 사용하게 되면 위와 같이 JSON의 형태로 반환이 됩니다. 기본적으로 위에서 말씀드렸던 규격화 돼있는 장점이 나타납니다.
하지만 여기서 제가 생각하는 또다른 장점이 있습니다.
바로 JSON은 Javascript를 기반으로 돼있는데요. 많은 Frontend 언어가 이 Javascript를 사용합니다. 그러면 어떤 장점이 존재할까요? 바로 Response로 온 데이터를 특별한 가공 없이 Frontend 부분에서 활용할 수 있다는 점입니다.
과장되게 말해서 Backend 개발자와 Frontend 개발자 간의 소통에도 큰 도움을 준다는 거죠.
자 그럼 우리는 이제 REST API의 강점과 REST API가 Request와 Response를 어떻게 다루는지 알게 됐습니다.
그럼 질문 하나만 해보겠습니다. RESTful Webservice가 뭘까요?
맞습니다!(정답을 말했든 안했든 일단 읽어 주셔서 감사합니다.)
바로 REST API를 활용해서 서버와 소통하는 웹서비스입니다.
그런데 궁금하지 않으신가요? 그럼 도대체 API는 뭘까요?
다음은 API에 대한 설명으로 돌아오겠습니다!
감사합니다!
이 글은 IBM Tehcnology의 설명을 기반으로 작성하였습니다.
참조 : https://www.youtube.com/watch?v=lsMQRaeKNDk
* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다!
* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!
'개발일반 > 도대체' 카테고리의 다른 글
도대체 OSI Model은 뭘까요? : 7 Layers (0) | 2023.02.20 |
---|---|
도대체 HTTPS는 뭘까요? (0) | 2023.02.17 |
도대체 HTTP는 뭘까요? (0) | 2023.02.16 |
도대체 Cookies(쿠키)는 뭘까요? (0) | 2023.02.15 |
도대체 API는 뭘까요? (0) | 2023.02.14 |