최근에 사용해본 카카오톡이나 AWS에서도 그렇고 'REST API' 혹은 'RESTful API'라는 것을 많이 사용하는 것 같은데 그것이 무엇인지 알아보았다.
HTTP 메시지 : 요청 메시지/응답 메시지
<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/94a32d94-3479-4f40-beb7-02e0cf92555c/다운로드.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/94a32d94-3479-4f40-beb7-02e0cf92555c/다운로드.png" width="40px" /> # HTTP Message 예시
Request Message
GET /book/shakespeare HTTP/1.1 - start line
Host: www.example/com:8080 - header
또는
GET www.example/com:8080/book/shakespeare HTTP/1.1 - start line
Response Message
HTTP/1.1 200 OK - start line
Content-Type: application/xhtml+xml; charset=utf-8 - header
****- blank line
<html> - body
⁝
<html>
</aside>
+) 요청 방식(method)와 상태 코드
Method
앞서 8가지의 요청 방법이 있었지만 실제로는 아래 4가지만 알고 있어도 무방하며,
CRUD(Create, Read, Update, Delete)의 표준 데이터베이스 기능을 수행
그 중에서도 GET과 POST를 현실적으로 가장 많이 사용한다. (HTML의 폼에서 지정할 수 있는 method가 이 두가지 밖에 없기 때문)
GET과 POST 차이
GET : 데이터를 서버로 보낼 때 url 부분에 포함하여 보낸다.
POST : 데이터를 서버로 보낼 때 요청 메시지의 body에 넣어 보낸다.
따라서 GET 방식을 이용하면 많은 양의 데이터를 보내기 어렵다. (url은 길이 제한이 있기 때문). 또한 데이터가 주소창에 노출되므로 보안에 취약하다. POST 방식이 GET 방식에 비해 비교적 보안의 측면에서 낫다고 할 수는 있지만 보안 쪽은 암호화를 따로 하지 않으면 비슷하다.
<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/94a32d94-3479-4f40-beb7-02e0cf92555c/다운로드.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/94a32d94-3479-4f40-beb7-02e0cf92555c/다운로드.png" width="40px" /> # GET 방식 예시
GET https://www.google.com/search?q=http+method&ie=UTF-8 HTTP/1.1 ——————————————————————————————————
**POST https://www.google.com/search HTTP/1.1 Content-Type: application/x-www-form-urlencoded
q=http+method&ie=UTF-8**
</aside>
Resource
자원 즉, URI를 말한다. URI는 인터넷 상의 자원을 식별하기 위한 문자열의 구성, URL은 인터넷 상의 자원의 위치.
Representation of Resource
Client가 서버에 자원에 대한 조작을 요청하면 서버는 이에 대한 적절한 응답, 즉 표현(Representation)을 해줘야 한다. 응답 메시지에는 JSON(Javascript Object Notation), XML 등의 포맷이 있고, 최근에는 JSON을 많이 쓰는 추세이다.
JSON은 그 이름에도 불구하고 사용 언어와 상관이 없을 뿐 아니라 인간과 머신이 모두 읽을 수 있기 때문에 가장 널리 사용된다.
HTTP POST, <https://github.com/do0ori/test>
{
"users" : {
"name" : "do0ori"
}
}
→ RESTful API : REST의 특징을 잘 살려서 RESTful하게 만든 API
REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog