본문 바로가기

코딩 공부204

[Spring] HAL(Json Hypertext Application Language) HAL(Json Hypertext Application Language) HAL은 JSON 또는 XML 코드 내의 외부 리소스 에 대한 링크와 같은 일관적이고 쉬운 하이퍼미디어를 정의하기 위한 규칙입니다. HAL을 채택하면 API를 탐색할 수 있게 되며 API 자체 내에서 해당 문서를 쉽게 검색할 수 있습니다. 간단히 말해서 API를 사용하기가 더 쉬워지고 클라이언트 개발자에게 더 매력적으로 느껴질 것입니다. HAL을 채택한 API는 대부분의 주요 프로그래밍 언어에 사용 가능한 오픈 소스 라이브러리를 사용하여 쉽게 제공되고 사용될 수 있습니다. 또한 다른 JSON처럼 처리할 수 있을 정도로 간단합니다. 🏷️ HAL Explorer HAL Explorer는 HAL을 사용하는 RESTful API 라면 이것.. 2023. 11. 19.
[Spring] Actuator Actuator 실행 중인 스프링 부트 애플리케이션의 정보를 API 형식으로 확인할 수 있게 해주는 기능입니다. 애플리케이션의 실행 여부, 패키지 로깅 레벨, Bean 목록, Metric(CPU, Heap, Thread 등) 등 여러 정보들을 확인할 수 있는 기능을 제공합니다. 🏷️ 사용법 org.springframework.boot spring-boot-starter-actuator maven의 경우 위의 dependency를 추가하여 사용하고 implementation 'org.springframework.boot:spring-boot-starter-actuator' gradle의 경우 위와 같이 implementation합니다. management.endpoints.web.exposure.inclu.. 2023. 11. 16.
[Spring] 직렬화(Serialize) 직렬화(Serialize) 직렬화란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술인 역직렬화를 아울러서 이야기합니다. 시스템적으로 이야기하자면 JVM(Java Virtual Machine)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기합니다. 🏷️ 직렬화 사용 방법 ✅ 직렬화 조건 자바 기본(primitive) 타입과 java.io.Serializable 인터페이스를 상속받은 객체는 직렬화 할 수 있는 기본 조건을 가집니다. publ.. 2023. 11. 15.
[Spring] HATEOAS HATEOAS (Hypermedia As The Engine Of Application State) Hateoas란 REST API를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것을 의미합니다. 이러한 방법은 클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URI를 응답에 포함시켜 반환하는 것으로 가능하게 할 수 있습니다. 🏷️ REST 성숙도 모델 이 모델은 위 이미지와 같이 4가지 수준으로 구성됩니다. ✅ 레벨 0 API 구현은 HTTP 프로토콜을 사용하지만 전체 기능을 활용하지는 않습니다. 또한 리소스에 대한 고유 주소가 제공되지 않습니다. ex) method: POST URI: /movie ✅ 레벨 1 리소스에 대한 고유 식별자가 있지만 리소스에 대한 각 .. 2023. 11. 14.
[Spring] REST API 버전 관리 REST API 버전 관리 버전관리라는 것은 단순하게 사용자에게 보여주는 항목을 관리하는 것이 아닌 REST API 설계가 변경되거나 Application의 구조가 변경되었을 시에도 버전을 변경해야 할 수도 있습니다. 또한 사용자들이 어떤 버전을 사용해야 할지 가이드를 해야 하거나 회사, 팀마다 어떻게 Version 관리를 하는 방식은 매우 다를 수도 있습니다. REST API의 새로운 버전을 오픈, 배포해도 고객들은 기존의 주 버전을 계속 사용하기를 원할수도 있고 새로운 API Version을 사용하길 원할 수도 있습니다. 즉, 기존 사용하던 Rest API를 계속해서 사용하게 해주기 위해 버전을 관리해주어야 합니다. 🏷️ 버전 관리 방법 ✔️ Major Version 과 Minor Version Ma.. 2023. 11. 12.
[Spring] 국제화 국제화 다른 언어를 사용하는 전 세계의 사용자들에게 REST API를 사용자 정의할때 필요입니다. 이때 홈페이지의 내용을 다국어로 지원해주는 것, 국제화를 사용합니다. 이때, i18n을 Accept-Language라는 것을 사용하여 국제화를 적용합니다. i18n(18개의 언어 Internationalization) Accept-Language를 통하여 i18n 을 사용하 Accept-Language는 사용자가 선호하는 언어와 지역을 나타냅니다. 🏷️ 예시코드 다음과 같이 메세지를 반환을 하게 하려면 message.properties가 필요하게 됩니다. // 국제화 예시 @GetMapping(path = "/hello-world-internationalized") public String helloworl.. 2023. 11. 12.