본문 바로가기
코딩 공부/web & Java

[Spring] HAL(Json Hypertext Application Language)

by 현장 2023. 11. 19.

HAL(Json Hypertext Application Language)

HAL은 JSON 또는 XML 코드 내의 외부 리소스 에 대한 링크와 같은 일관적이고 쉬운 하이퍼미디어를 정의하기 위한 규칙입니다.

 

HAL을 채택하면 API를 탐색할 수 있게 되며 API 자체 내에서 해당 문서를 쉽게 검색할 수 있습니다. 간단히 말해서 API를 사용하기가 더 쉬워지고 클라이언트 개발자에게 더 매력적으로 느껴질 것입니다.

 

HAL을 채택한 API는 대부분의 주요 프로그래밍 언어에 사용 가능한 오픈 소스 라이브러리를 사용하여 쉽게 제공되고 사용될 수 있습니다. 또한 다른 JSON처럼 처리할 수 있을 정도로 간단합니다.

🏷️ HAL Explorer

HAL Explorer

HAL Explorer는 HAL을 사용하는 RESTful API 라면 이것을 통해여 API 를 테스트하거나 실행해볼 수 있습니다. 또한 기술자가 아닌 사람도  PostMan 과 같은 툴을 쓰지 않더라도 Hal explorer 를 통하여 API 를 사용할 수 있습니다.

✅ Dependency

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-hal-explorer</artifactId>
</dependency>

✅ 주소

http://localhost:8080/explorer/index.html

 

🏷️ 특성

1. HAL 규칙은 Resources 및 Links 라는 두 가지 간단한 개념을 표현하는 데 중점을 둡니다.

Resources
- 링크(URI에 대한)
- 내장된 리소스(즉, 그 안에 포함된 다른 리소스)
- 상태(늪지 표준 JSON 또는 XML 데이터)

Links 
- 대상(URI)일명 관계. 
- 'rel'(링크 이름)
- 지원 중단, 콘텐츠 협상 등에 도움이 되는 몇 가지 다른 선택적 속성

2. HAL에는 JSON 및 XML 변형에 대한 미디어 유형이 있습니다.

대략적인 HAL 표현의 구조

🏷️ 예시

📖 Reference

Mike Kelly

wikipedia

'코딩 공부 > web & Java' 카테고리의 다른 글

[JPA] @Entity는 기본 생성자를 왜 가져야 하는가?  (0) 2023.11.22
[Spring] Response Customizing  (1) 2023.11.20
[Spring] Actuator  (0) 2023.11.16
[Spring] 직렬화(Serialize)  (1) 2023.11.15
[Spring] HATEOAS  (1) 2023.11.14