본문 바로가기

Backend21

[Spring] 따닥으로 인한 중복 요청 방지하기 - 2 https://hyeri-dev.tistory.com/55 에서 이어집니다. 💡 Kotlin + Spring boot로 작성된 글입니다. 1. 문제@PatchMapping("/{order-id}")fun cancelOrders( httpRequest: HttpServletRequest, @AuthenticationPrincipal user: User, @PathVariable("order-id") orderId: String): ResponseEntity> { // 중복요청인지 확인 duplicateRequestService.isDuplicateRequest( user = user, request = httpRequest ) // 실질적인 비즈니스 로직 val response = or.. 2025. 7. 22.
[Spring] 따닥으로 인한 중복 요청 방지하기 - 1 💡 Kotlin + Spring boot 로 작성된 글입니다.1. 문제사내 서비스에서 일명 따닥으로 인하여 중복 요청이 들어오는 경우가 발생하였다. GET 요청은 멱등성을 보장하기 때문에 큰 문제가 발생하지는 않지만, POST, PATCH 와 같은 데이터의 변경이 있는 요청에는 여러가지 문제가 발생할 수 있다.사내에서 발생한 문제는 결제가 정상적으로 취소되었음에도 불구하고 중복 요청에 의하여 Exception이 발생하였고 요청 실패 창이 뜨는 문제였다. 사용자 입장에서는 정상적으로 처리되지 않았다는 인식을 하게 되어 관련된 문의가 다수 발생하였다.해당 문제는 화면단에서도 처리 해야 하는 문제이지만 서버 내부에서도 체크할 필요가 있다고 판단하여 작업을 진행하였다.2. 요구사항문제를 해결하기 위한 방안에.. 2025. 7. 20.
[SpringBoot + Kotlin + MySQL] HTML 문서 DB에 저장하기 🙇‍♀️🙇‍♂️🙇읽으시는 분이 많을지 모르겠지만 혹시나 참고하시려고 이 글에 들어오신 분들!아래 방법은 좋은 방법이 아닐 수 있습니다.  참고 부탁드립니다!!🙇‍♀️🙇‍♂️🙇 게시판 API를 작성하던 도중 프론트엔드 개발자분이 마크다운 에디터로 글을 작성해 HTML 문서로 서버에 보낼테니 그 자체를 저장하자는 제안을 해주셨다.  처음 기획은 단순 제목, 내용이 글로만 작성될테니 String 형식으로 작성하였는데 HTML 문서를 데이터로 받으면 어떤 데이터 형식으로 받아야 하나 고민을 하게 되었다.기존 코드@Entityclass Notice( content: String // String 형식으로 데이터를 받음) { @Column var content = content protect.. 2024. 5. 18.
[Kotlin] Pair와 Triple Pair? Triple? 코틀린에는 변수의 값들을 하나로 묶어 사용할 수 있는 data class가 존재한다. 이는 자료구조 Map과 비슷한 형상을 띄고 있지만 key-value 구조가 아닌 정말 여러 개의 값을 하나의 묶음으로 표현한 것이므로 자료구조의 개념이 아닌 단순하게 편의성을 위해 변수를 묶어 사용한다. 이 data class는 Pair와 Triple로 이름에서 알 수 있듯이 Pair는 두 개의 값을, Triple은 세 개의 값을 묶어 사용한다. 💡 이 클래스의 값에는 의미가 부여되지 않으며, 어떤 목적으로도 사용할 수 있습니다. 위 설명에서 알 수 있듯이 단순 편의성을 위해 정의된 data class임을 알 수 있다. 정의하는 법 Pair와 Triple은 묶는 변수의 개수만 다를 뿐 사용하는 .. 2024. 4. 18.
[Kotlin] Java와 Kotlin의 접근 제어자 차이 Java와 Kotlin의 가시성 제어 Java의 접근제어자 Kotlin의 접근 제어자 public 모든 곳에서 접근 가능 public 모든 곳에서 접근 가능 protected 같은 패키지 또는 하위 클래스에서만 접근 가능 protected 선언된 클래스 또는 하위 클래스에서만 접근 가능 defalut 같은 패키지에서만 접근 가능 internal 같은 모듈에서만 접근 가능 private 선언된 클래스 내에서만 접근 가능 private 선언된 클래스 내에서만 접근 가 Java는 패키지라는 개념을 사용해 클래스들을 관리하지만 Kotlin에서는 패키지를 단순 namespace(어떤 클래스가 어떤 패키지에 있는 등 영역을 나누기 위한 용도)를 관리하기 위한 용도로만 사용하며 가시성 제어에는 사용되지 않는다. Ja.. 2024. 3. 24.
[Java] 객체 지향 4대 특징-3 (추상화) 추상화 좋은 코드는 새로운 기능이 추가되었을 때 변하는 부분을 최소화하는 것을 말한다. 이렇게 하기 위해서는 변하는 부분과 변하지 않는 부분을 명확하게 구분 지어 코드를 작성하는 것이 필요하다. 상속을 통해 다형성있는 코드를 구현하면서 부모와 자식 타입에 같은 이름을 가진 메서드를 작성한 경우 여러 가지 문제와 불편함이 있음을 알 수 있었다. 단순 상속과 다형성의 한계 public class Music { // 상속을 위한 부모 클래스 역할만 수행 public void play() { System.out.println("음악 재생)"; } } public class Dash extends Music { @Override public void play() { System.out.println("Dash를 .. 2024. 1. 22.