Backend/Spring(37)
-
[Spring] Rest 통신으로 공공 API 연결해보기
📝 Spring에서 외부 API를 연동하는 방법들이 궁금하여, 구현해보며 정리한 글입니다.데이터 통신 방식은 REST, WebSocket, gRPC, MQTT, Serverless, GraphQL 등 매우 다양합니다. 그 중에서 REST(representational State Transfer) 은 HTTP 프로토콜 기반의 통신이며, 클라이언트와 서버가 통신할 수 있게 하는 통신 방식입니다. Spring 프레임워크에서는 이러한 REST 통신을 구현할 수 있는 여러 도구를 제공합니다. 대표적으로 RestTemplate, FeignClient, 그리고 OkHttp, Retrofit 과 같은 외부 라이브러리를 활용한 방식들이 있습니다. 아래 예시는 GET 메서드를 사용하여 공공 데이터 포털(https://w..
2025.08.19 -
[Error/Spring] Caused by: java.io.IOException: entry 'sample.txt' closed at '0' before the '10000' bytes specified in the header were written
특정 데이터를 파일(.tar)로 압축할 때 생길 수 있는 에러에 관한 글입니다. tar는 tape archive의 약자로, 파일 형식 혹은 명령어를 의미합니다. tar는 여러 파일이나 디렉토리를 묶을 때 사용하는데요. 놀라운 건 tar는 zip 등과 달리 파일 압축을 하지는 않습니다. tar를 만들기 위해 spring 에서 TarArchiveEntry를 사용할 수 있습니다. TarArchiveEntry는 파일(또는 디렉토리)에 대한 메타데이터를 헤더에 기록하게 됩니다. 리눅스에서 archive로 묶는 tar를 생성하고 싶다면 리눅스 명령어파일(또는 디렉토리) archivetar -cvf [생성파일.tar] [디렉토리 or 파일]파일(또는 디렉토리) archive + 압축tar -czvf [생성파일.ta..
2025.07.02 -
[Error/Spring] out of START_ARRAY token
데이터를 가져올 때, 데이터에 맞는 객체 클래스를 생성하고 해당 객체를 이용하여 데이터를 가져올 수 있습니다. 하지만 가끔 아래와 같은 에러가 발생하곤 합니다.~~~ : Can not deserialize instance of ---- out of START_ARRAY token at ---- 😂원인 저의 친구 GPT와 Google 을 통해서 검색해보니, 해당 원인은 다음과 같습니다. 1) 데이터를 보고, 데이터의 값으로 List를 기대합니다.2) 하지만, 단일 객체 또는 필드에서 단일 객체의 형태로 매핑하려고 하게 됩니다. 이럴 때, 위와 같은 에러가 발생하게 됩니다. 예를 들어, 이름(name)과 색(color)을 필드로 가지는 Fruit라는 클래스가 있다고 가정해보겠습니다. 객체에서는 아래와 같이..
2025.06.15 -
[Error/Spring/SSL] PKIX path building failed
향후 다른 개발 중에도 만날 수 있는 에러로서, 블로그 글로 작성하여 내용을 남기려고 합니다~!! Java, Spring Boot 환경을 기준으로 작성되었습니다 😭Error로컬 환경, 테스트 환경, (Staging 혹은) 운영 환경에서 발생할 수 있는 에러인데요!! 특정 날을 기점으로 로컬 환경에서부터 아래의 에러가 발생하기 시작했습니다. org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://(도메인 or ip):port/api": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: un..
2025.05.31 -
[Spring/AI] Spring AI를 활용하여 가볍게 영작하기
📝 AI는 python의 영역이라고 생각했지만, Spring AI를 통해 여러 AI Model를 붙여 사용할 수 있다고 해서 사용해봤습니다. Spring AI먼저, 아래의 링크는 Spring AI를 소개하고 있는 공식 페이지 입니다. Spring AISpring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design and promote using POJOs as the building blocks of an application to the AI domain. Ats..
2025.03.24 -
[Spring/Architecture] Rate Limiter (처리율 제한 장치) - too many requests
📝 최근 짧은 시간에 엄청나게 많은 클라이언트의 요청을 (많은 트래픽) 경험하게 되었고, 이로 인해 문제점이 발생하게 되었습니다. 언제든지 과도한 트래픽이 발생할 수 있기 때문에, 이를 대처하고자 방법을 찾다 발견한 것이 'Rate Limiter'였습니다! 따라서 관련 내용을 공부 후 정리하여 기억하고, 비슷한 상황을 만났을 때 빠르게 대처하고자 글을 작성합니다.이 글을 Windows 11, Spring Boot 3.4.3, Java 17 기준으로 작성되었습니다. (개인 test용) 😂 Problem 위의 그림처럼, 평상시에 클라이언트는 접근 가능한 url(https://ip:port/api)를 사용하여 특정 api 요청을 하게 됩니다. 그렇게 되면 특정 서비스에서 cache, 외부 api, DB ..
2025.03.23