사람이 소통하듯이 컴퓨터는 컴퓨터끼리 소통을 함.
이 중에 소프트웨어끼리 통신을 하는 분야로 좁혀봄
사람은 말 또는 글이라는 매게체로 정보를 주고 받음 ⬅️➡️ 이와 같이 소프트웨어끼리 가지고 있는 정보를 교환하는 그 매게체를 Interface라고 함
글에도 형식이 있어서 형식에 따라서 적는데 ⬅️➡️Interface를 통하여 이야기하는 소프트웨어들도 규칙있게 이야기 해야 하는데 이것을 protocol이라고 함
💡 정리: interface라는 매개체를 통해서 서로의 정보를 합의된 protocol로 주고 받는다 ↔ 내가 가지고 있는 정보를 고객에게 메일(interface)을 통해서 보내야 하니 기본 메일 형식(protocol)으로 작성해서 보내야지.
💡 URL(Uniform Resource Locator): 네트워크 상에서 웹 페이지, 이미지, 동영상 들의 파일의 위치 정보
Create Read Update Delete의 줄임말로 데이터를 다루는 행동들의 큰 범위 4가지
CRUD | 요청의 뜻 | method |
---|---|---|
CREATE | 만들어줘 | POST |
READ | 불러와줘 | GET |
UPDATE | 업데이트해줘 | PUT/PATCH |
DELETE | 삭제해줘 | DELETE |
REST? Representation State Transfer ( 표시된 상태를 전달)
💡 쉬운 설명: 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
GET /doctors/허준/slots?date=2022-08-10 HTP/1.1
로 작성 → (인라인 코드의 뜻은 아래 REST 2단계에서 또 나옴)HTTP API들의 거의 표준이라 할 수 있는 규칙
💡 내가 가지고 있는 정보를 고객에게 메일(interface)을 통해서 보내야 하니 비즈니스 형식(HTTP protocol)로 작성해서 보내야지.
그러면 어떤 것이 REST API라고 할 수 있는 건가? === RESTful API라고 할 수 있는 것은?
답: 다음 4단계(0~3단계) 만족 시 REST API라고 부를 수 있음, 마지막 단계(3단계)까지는 아니어도 2단계까지만 해도 충분히 좋음
단순히 HTTP 프로토콜을 이용한 통신, 그러나 이 자체를 API라고 하지 않음
POST /appointment HTP/1.1
와 그 뒤에 딸려 오는 것으로 예약 가능한 시간과 예약일정을 만들었다
개별 리소스(resource)에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달
POST /doctor/허준 HTP/1.1
로 허준 의사라는 개별 리소에 초점을 맞춰서 불러오고 있음
하려는 목적에 맞게 먼저 {method} {URI}를 입력해줌으로써 어느 데이터(URI)에게 어떤 해동(method)를 하라는 것을 알 수 있음
GET /doctors/허준/slots?date=2022-08-10 HTP/1.1
을 보면 “허준 의사의 8월 10일 일정을 가져와줘"라는 것을 알 수 있음
HATEOAS(Hypertest As The Engine Of Application State)로 하이퍼미디어 컨트롤 적용 → 요청(request)는 2단계와 동일하되 응답(response)에는 리소스 URI를 포함한 ‘링크'요소 삽입 작성. 이로 인해 새로운 기능에 접근할 수 있도록 해주는 것이 핵심
사실 정보는 매우 중요한 자산이다. 이런 것을 무료로 주는 것은 자신의 사업을 그냥 남에게 오픈하는 것과 같음.
따라서, 일부 허가된 사용자들에게만 허가되고 추적관리를 위해 만든 것이 API KEY
💡 내가 신분증(API KEY)를 찍어야지만 자료실에 들어가서 자료를 뺴올 수 있음 → 사용기록이 남고 추적관리에 용이
그러나, 공공기관 등 만든 사람에 따라서 정보를 ‘공개’로 설정할 수 있음 → 이것을 OPEN API라고 함 (누구나 접근이 가능하지만 약간의 제한(월 정보요청 횟수, 정보량 제한 등등)이 있을 수 있음
https://bentist.tistory.com/37
https://evan-moon.github.io/2020/04/07/about-restful-api/
https://velog.io/@soom/REST-Representational-State-Transfer