Developing Myself Everyday
Published 2023. 5. 1. 17:16
REST API에서 HATEOAS란? Android/Kotlin

HATEOAS란?


HATEOAS(Hypermedia as th engine of application state)는 클라이언트가 API에서 제공되는 자원 간 관계를 탐색하고 이를 통해 애플리케이션 상태를 변경할 수 있는 기능을 제공한다. 만약 REST API에서 HATEOAS를 적용하지 않은 응답 예시를 들어보면, 클라이언트가 서버에스 응답받은 리소스의 URI를 기반으로 클라이언트가 가능한 동작을 수행하기 어렵다는 것이다. 이를 예를 들어 설명해 보겠다.

 다음과 같은 REST API가 있다고 가정해 보겠다. 

GET /users/1​


 위의 API를 호출하면 서버는 클라이언트에게 원하는 유저의 정보를 반환할 수 있다. 그 응답은 아래와 같다.

{
    "id": 1,
    "name": "John Smith",
    "email": "john.smith@example.com",
    "phone": "123-456-7890"
}


 하지만 이 응답에는 클라이언트가 다음에 할 수 있는 동작이 명확하게 포함되어 있지 않다. 클라이언트는 다음에 어떤 동작을 수행할 수 있는지에 대한 정보를 알기 위해 별도의 문서를 참조해야 한다.

 반면, HATEOAS를 적용한 REST API의 응답은 클라이언트가 다음에 수행할 수 있는 동작을 명확하게 포함하고 있다. 예를 들어, 위의 API를 HATEOAS를 적용하여 다시 작성하면 다음과 같이 될 수 있다.

{
    "id": 1,
    "name": "John Smith",
    "email": "john.smith@example.com",
    "phone": "123-456-7890",
    "_links": {
        "self": {
            "href": "/users/1"
        },
        "orders": {
            "href": "/users/1/orders"
        },
        "update": {
            "href": "/users/1",
            "method": "PUT"
        },
        "delete": {
            "href": "/users/1",
            "method": "DELETE"
        }
    }
}


 위 응답은 클라이언트가 다음에 할 수 있는 동작과 그에 필요한 URI와 메서드를 포함하고 있다. 예를 들어 'order' 링크를 클릭하면 해당 사용자의 주문 목록을 볼 수 있다. 이렇게 HATEOAS를 적용하면, 클라이언트는 서버에서 반환된 링크를 따라 다음에 수행할 수 있는 동작을 쉽게 파악할 수 있다.

'Android > Kotlin' 카테고리의 다른 글

Enum Class  (0) 2023.05.26
Abstract Class & Interface  (0) 2023.05.25
변수 캡슐화하기 (Encapsulate Variable)  (0) 2023.05.12
REST API, Retrofit  (0) 2023.05.01
Retrofit 이란?  (0) 2023.04.03
profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!