HTTP 공부 - REST API

그래도 아무튼 개발자·2023년 3월 29일
1

웹프로그래밍

목록 보기
4/7
post-thumbnail

REST API란?

Representational State Transfer의 약자로, 웹에서 사용되는 Data나 Resource를 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 의미한다.

쉽게 말하면 다른 사이트의 핵심 컨텐츠나 기능을 다른 외부 사이트에서 활용할 수 있도록 제공되는 인터페이스이다.

다양한 웹브라우저 뿐만 아니라 어플들의 등장으로 인해 다양한 클라이언트에 대응하기 위해 REST API가 널리 사용되기 시작하였다.

이러한 REST API를 작성할 때에는 몇 가지의 규칙이 존재하는데, 로이 필딩이 논문에서 제시한 REST 방법론을 실용적으로 적용하기 위해 레오나르도 리차드슨은 REST API를 잘 적용하기 위한 4단계의 모델을 만들었다.

총 4단계로 나뉘며, 모든 단계를 충족해야 REST API라고 주장은 하지만, 실질적으로 마지막 단계인 3단계는 충족시키기 매우 어렵기에 2단계만 충족해도 좋은 API라고 생각하면 된다.💪

0단계

0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 된다. 하지만 이것만 충족했을 경우 해당 API를 REST API라고는 절대 할 수 없다. REST API를 만드는 기초 단계라고 생각하면 된다.

Request

POST /api/user
{
  "function": "getUser",
  "arguments" [
    "1"
  ]
}

Response

HTTP/1.1 200 OK
{
  "result" {
    "id": "1"
    "name": "Kim",
  }
}

1단계

1단계 부터는 리소스 개념이 들어간다.
모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야 하며, 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 하는 것이 이번 1단계의 핵심이다!
더불어 요청에 따른 응답으로 리소스를 전달할 때 리소스 사용에 대한 성공/실패 여부 또한 반환해야 한다.

Request

POST /api/users/create
{
  "name": "Kim"
}

Response

HTTP/1.1 200 OK
{
  "result" {
    "error": "already exist member"
  }
}

2단계

사실상 REST API로 해당되는 단계이다. 여기서는 CRUD에 맞는 적절한 HTTP 메서드를 사용하는 것에 중점을 둔다. 조회에는 GET 메서드, 생성에는 POST 메서드 등 상황에 맞게 적절하게 사용하는 것이 특징이다. 앞선 단계에서는 무조건적으로 POST를 사용했기에 적합한 REST API라 보기 힘들다.

Request

GET /api/user
{
  "function": "getUser",
  "arguments" [
    "1"
  ]
}

Response

HTTP/1.1 200 OK
{
  "result" {
    "id": "1"
    "name": "Kim",
  }
}

3단계

HATEOAS(Hypermedia As The Engine Of Application State)로, 즉 하이퍼미디어 컨트롤를 의미한다고 보면 된다. API 서비스의 모든 End-Point를 최초 진입점이 되는 URI를 통해 Link 형태로 제공하는 것이 특징이다.

Request

GET /api/users/1

Response

HTTP/1.1 200 OK
Content-Type: application/json
{
 "result" {
    "id": "1",
    "name": "Kim",
    "_links": {
      "update" : {
        "href" : "https:/api/users/1"
      },
		.
        .
        .
        .
  }
}



++Open API란?

정부에서 제공하는 공공데이터 API를 의미한다. 공공데이터 포털에 접속하면 쉽게 접할 수 있다.

물론 누구에게나 열려있는 건 맞지만, 무상으로, 무제한으로 이용할 수 있다는 것은 아니다. API 별로 각각의 수칙이 있고, 그러한 수칙에 따라서 이용해야만 정상적인 API 이용이 가능하다.🙌

++API Key란?

API를 이용하기 위해서 필요한 열쇠로, 보안 방식중 하나이다. API Key가 있어야 해당 API의 서버를 열 수 있다. 서버는 메시지 안에서 해당 API Key를 읽어 이 API가 누가 호출한 API인지를 인증할 수 있게 된다.
다만 모든 클라이언트들이 같은 API Key를 공유해버릴수 있기에 API Key가 노출이 되면 전체 API가 뚫려버리는 대참사가 일어날 수 있기에 높은 보안이 요구되는 API에서는 그닥 권장되진 않는 보안방식이다.

0개의 댓글