REST API

sungji·2024년 3월 3일
0
post-thumbnail

API : 다른 소프트웨어와 통신하기 위해 따라야 하는 규칙
REpresentational State Transfer API :

  • HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처
  • HTTP 프로토콜을 어떻게 하면 잘 쓸 수 있는지에 대한 방법론

REST API의 요소 (조건)

  • client-server : 클라이언트/서버가 상호작용하는 구성
  • stateless : 서로의 상태를 저장하지 않으며, 매번 상호작용은 독립적으로 처리된다.
  • cache : 클라이언트의 응답 캐시
  • layered sysyem : 계층화된 서버 시스템
  • code on demand : 서버가 클라이언트에서 실행 가능한 코드를 전송할 수 있음 (optional)
  • uniform interface : 상호작용은 일관된 인터페이스에 따라 이루어져야 함

HTTP 프로토콜을 통해 대부분 만족하지만, uniform interface 의 일부 조건은 잘 지켜지지 않음

uniform interface (일관된 인터페이스)
  1. 리소스

    • 서버가 가지고 있는 모든 데이터
    • URI를 통해 현재 접근하는 자원이 무엇인지 명확하게 나타낸다.
    1. 동사보다는 명사를 사용하며, 2단계 이내로 단순하게 표현한다
    		(collection: 단일 리소스의 묶음, 복수형으로 사용 / document: 단일 리소스)
     /users/sungji
    
    2. 연관관계가 있는 리소스일 경우, 관계를 명시할 수도 있다.
     /users/sungji/address
     /users/sungji/likes/food
    
    3. 페이징 (100-125 레코드를 조회-페이스북)
     /record?offset=100&limit=25
    
    4. 부분 응답 (리소스의 특정 필드만 필요한 경우)
     /terry/friends?fields=id, name
    
    5. 전역검색 / 특정 리소스 안에서 검색
     /search?q=id%3Dsungji
     /users?q=id%3Dsungji
    
    6. 검색 및 페이징
     /user?q=name%3Dsungji, region%3Dseoul&offset=20&limit=10
  2. Representation (표현, 대표)

  • 현재 접근하는 자원의 상태에 대한 정보를 담은 표현

  • 자원을 어떻게 조작할지 HTTP메세지에 명시한다.

    HTTP 메세지

  • Method : GET, POST, PATCH, PUT, DELETE

  • representation data : 자원의 현재 상태(데이터)

  • representation metadata : representation에 대한 정보 (길이, 형식 등)

    1. 요청
    GET /users/user1 HTTP/1.1
     Host : example.com
    
    2. 응답
    HTTP/1.1 200 OK
     Contnent-type : application/json
  1. 자기 기술적 메세지 : 메세지만을 가지고 요청을 처리할 수 있도록 정보가 충분히 담겨 있어야 한다.
  2. HATEOAS : 서버의 응답에는 클라이언트가 리소스의 다음 동작을 결정할 수 있는 하이퍼링크를 포함
    {
    	"links": [
        	{
            	"rel": "detail",
                "href": "http://example/items/1234"
            },
            {
            	"rel": "order",
                "method": "post",
                "href": "http://server/api/items/order"
            }
        ]
    }

REST API가 잘 지켜졌을 때의 장점

  • stateless에 따른 독립성, 캐싱에 의한 성능 및 속도 등 http프로토콜을 준수함으로써 얻는 이점
  • 궁극적으로 REST API를 준수함으로써 서버와 클라이언트의 관심사를 분리하고, 독립적으로 진화할 수 있음

RESTful API ?

  • RESTful API : REST API의 방법론에 기반해 API가 잘 설계 되었음을 의미한다.
  • 그러나 모든 조건을 만족하는 API가 많지 않기 때문에, Restful이라는 말을 사용

참고하기

profile
열정 열정 열정

0개의 댓글