자 오늘은 REST API에 대해서 알아보자
항상 ANGULAR, SPRING , JAVA 등등 한 틀을 잡고 공부를 해왔는데 오늘은 번외로 REST API를 공부해보려 한다.
REST API
어떤 느낌이 드시나요.? 먼가 되게 어렵게 느껴지진 않으신가요..? 저는 처음에 굉장히 어렵게 느껴졌답니다. 물론 지금도 쉽지는 않아요... 항상 선배님들이 ' REST API ' ,
' REST API로 주고받음 되자나' 라고 말할 때마다 ... 도무지 무슨소린지 이해를 할수 없었죠. 하지만 언제나 그렇듯 알고나면 별거 없다는거... 그렇죠?
그럼 지금부터 시작하겠습니다.
1. REST - Representational State Transfer
대표적인 상태(정보)들을 주고받는 것
어렵죠? 더 쉽게 설명하자면 " 자원이라 할수 있는 모든것들을 주고 받는것 " 더 더 쉽게 웹과 관련 지어서 " HTTP 프로토콜을 사용하여 주고받을수 있는 모든것 "
아직도 어려우 실수 있으니 더 설명해드리겠습니다.
요청
GET /restapi/v1.0 HTTP/1.1 Accept: application/json Authorization: Bearer UExBMDFUMDRQV1MwMnzpdvtYYNWMSJ7CL8h0zM6q6a9ntw
응답
HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Content-Type: text/html; charset=UTF-8 Content-Encoding: UTF-8 Content-Length: 138 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) ETag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Connection: close <html> <head> <title>An Example Page</title> </head> <body> Hello World, this is a very simple HTML document. </body> </html>
HTTP 프로토콜에서 보실수 있는 요청과 응답의 헤더와 바디 입니다. 우리가 아까 말한 '자원'이란 저 요청과 응답안에 있는 모든 라인이 자원에 해당됩니다.
요청의 경우 GET 방식이며 url은 /restapi/v1.0 이며 http 1.1 버전 그리고 accept... 전부가 '자원'에 해당 되는 것이죠 응답은 말할것도 없구요! 특히나 응답의 경우
connection : close \r\n
\r\n
<html>...</html>
이러한 바디부도 존재 하겠네요. 각 줄마다 date는 머고 content-type은 머고.. 알면 좋지만 모르셔도 됩니다. 필요할 때 그때그때 찾아서 공부하고 넘어가면 되는 부분이니까요
이렇듯 REST는 http 프로토콜을 그대로 사용하기 때문의 http 프로토콜을 극대화 하여 사용한다는점을 알수 있습니다.
REST는 이게 끝입니다. 더 어렵게 알필요도 없습니다. 자세한 부분은 그떄 그때 찾아보면 되거든요 ( CRUD, 구성요소...등등)
2. API - Application Programming Interface
데이터와 기능의 집합을 제공하여 ...어쩌고 저쩌고....
단순하게 생각하자 그냥 응용 프로그램 (웹,앱) 간에 상호작용을 좀더 쉽게 하여 상호간 정보 교환을 더 용이하게 만드는것 이라고 할수 있다.
이게 끝이다 API는 정말로 끝이다.
3. REST API
위 설명 2가지를 합치면 된다. REST 기반으로 서비스 API를 구현하는것인데 쉽게 말하면 자원을 주고받는 , 즉 정보교환에 있어 http자원들을 사용하는것이다.
이게 끝이다. 그외 REST API 설계 규칙 , 자원에 대한 명명 규칙이 있는데 이런건 그때그떄 필요할때 찾아보자. 우린 핵심만 짚고 넘어가는게 핵심이다.
우린 이제 REST API가 뭘 말하는지 알게됬다. 장황하게 알 필요도 없다. 우린 교수가 될게 아니니 말이다.
자 그럼 다음 공부 때 이 REST API를 가지고 구현한 것들을 한번 알아보고 공부해보자 REST API는 결국 도구 일뿐이다.
끄적끄적 REST API !! OAUTH ?? <2> (0) | 2019.03.12 |
---|---|
IP address (0) | 2018.07.10 |
Call by Value or Reference in JAVA (0) | 2018.07.02 |
3-WAY Handshake (0) | 2018.06.27 |
Unicode,UTF (0) | 2018.06.25 |