현재 이해합니다 HATEOAS는 기본적으로 각 응답 링크와 함께 다음에 수행 할 작업에 대한 정보를 보내는 것입니다. 하나의 간단한 예는 인터넷에서 쉽게 찾을 수 있습니다 : 계정 시스템과 은행 시스템. 이 예는 계정 리소스에 대한 GET 요청 후이 응답을 보여줍니다.
GET /account/12345 HTTP/1.1 HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">100.00</balance>
<link rel="deposit" href="/account/12345/deposit" />
<link rel="withdraw" href="/account/12345/withdraw" />
<link rel="transfer" href="/account/12345/transfer" />
<link rel="close" href="/account/12345/close" />
</account>
데이터와 함께 다음에 수행 할 수있는 작업을 알려주는 링크가 있습니다. 잔액이 음수이면
GET /account/12345 HTTP/1.1 HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">-25.00</balance>
<link rel="deposit" href="/account/12345/deposit" />
</account>
입금 만 가능합니다. Fiddler를 사용하거나 브라우저로 요청하면 수행 할 수있는 작업을 쉽게 확인할 수 있습니다. 이런 종류의 정보는 API의 기능을 발견하고 서버가 클라이언트에서 분리되는 데 유용합니다.
그러나 요점은 우리가 Javascript를 사용하는 SPA, Android 앱 또는 다른 많은 것들과 같은 클라이언트를 구축 할 때 HATEOAS가 어떻게 계속 관련이 있는지 알 수 없다는 것입니다. 의미하는 바는 다음과 같습니다. SPA를 자바 스크립트로 코딩 할 때 코드를 작성하려면 API에서 수행 할 수있는 작업을 알아야합니다.
따라서 서버에 ajax 호출을 작성하고 심지어 UI를 빌드하기 위해 리소스, 지원되는 메소드, 수신 대상 및 반환 대상을 알아야합니다. UI를 만들 때 계정을 요청한 후 예를 들어 입금하거나 UI에서이 옵션을 제공 할 수 없다는 것을 알아야합니다. 또한 아약스 호출을 빌드하기 위해 예금을 만들기 위해 URI를 알아야합니다.
내 말은 API에 요청을 할 때 링크를 사용하면 API를 더 잘 발견하고 사용할 수 있지만 클라이언트를 만들 때 우리가 구축하는 앱은 단순히 링크를 보지 않고 자체적으로 렌더링하는 것입니다 올바른 UI와 올바른 아약스 호출을하십시오.
그렇다면 고객에게 HATEOAS가 어떻게 중요한가? 어쨌든 우리는 왜 HATEOAS를 귀찮게합니까?