HTTP 200 OK

Memento mori & Carpe diem

Kotlin 5

JSON 직렬화가 왜 안돼?..

개요A서버에서 B서버로 body를 전달해주는 테스트를 하던 도중 필드 하나가 미전달 되는 현상이 지속적으로 발생했습니다. 해당 이슈를 해결하기 위해 다방면으로 고민했던 과정과 해결방안을 작성했습니다. 해결과정dto는 아래와 구성했고 해당 객체를 body에 담아 전달해주는 로직을 작성하고 있었습니다. 여느때와 다름없는 작업이었지만 isDelete 필드만 전달 되지 않는 현상이 발생하고 있었습니다. 간단한 문제라고 생각했기에 큰 문제가 아니라고 생각했지만 고난의 시작이었습니다ㅠ..data class jacksonTest( val id : String, val name : String, val isDelete : String, val createdAt : LocalDateTime) 이렇게..

Kotlin 2024.11.24

[Kotlin] Result란?

Result란? Result는 동작이 성공하든 실패하든 동작의 결과를 캡슐화하여 나중에 처리할 수 있도록 하는 것이 목적입니다. Result 클래스는 runCatching 함수의 반환형이며 코루틴에서 에러 처리를 할 때 권장하는 방식이기도 합니다. runCatching 블록 안에서 성공/실패 여부가 캡슐화된 Result 형태로 리턴합니다.(Js의 Promise와 유사) - Result 클래스 멤버 isSuccess & isFailure 블록의 실행이 성공하면 (블록내에서 예외처리가 발생하지 않았을때) isSuccess 변수를 확인하여 알 수 있습니다. 역으로 블록의 실행이 실패했다면 isFailure 변수를 통해 확인 할 수 있습니다. if (colorName.isSuccess) { //성공시 호출 } ..

Kotlin 2023.09.12

[Kotlin] Error Handling

kotlin Error Handle을 하기 전에 어떠한 상황에서 에러 상황을 처리할지 정해야 한다. Type-safe Error Handling → Either Type Either Type은 Left && Right에 특정 value가 들어갔을때 미리 정의한 type과 일치하지 않는다면 .left() && .right() 를 사용해 success/fail을 커스텀할 수 있다. sealed class Either data class Left(val value: L): Either() / error data class Right(val value: R): Either() // success Sealed class는 하나의 type value를 사용하는 제한적인 상황일때 다양한 기능을 해당 value로 구현..

Kotlin 2023.08.26

Run Catching

Run Catching란? runCatching 은 try-catch 를 대체할 수 있는 코틀린의 문법이다. try-catch 문은 실패시의 핸들링을 처리할 수 있었다면, runCatching 은 성공시, 실패시 둘 다 처리할 수 있다. 기본 문법 runCatching { } : 중괄호 안에 try 하고자 하는 구문을 작성 onSuccess { } : 위 runCatch 구문이 성공시 매핑할 구문을 작성. it 은 위 구문의 결과. onFailure { } : 위 runCatch 구문이 실패시 매핑할 구문을 작성. it 은 위 구문에서 던진 Throwable 객체. also { } : 기존 try-catch-finally 에서 finally 에서 작성하던 구문을 작성할 수 있음. 복잡한 상황 map { ..

Kotlin 2023.03.01

[Kotlin] 기초

코틀린 요약 코틀린은 타입 추론을 지원하는 정적 타입 지정 언어다. 따라서 소스코드의 정확성과 성능을 보장하면서도 소스코드를 간결하게 유지 할 수 있다. 안정성이 있다.(null체크 & 캐스트) Java 코드와 상호운용하기 쉽다. kotlin 기초 함수 fun main(args: Array) { printLn("Hello, world!") } 함수를 선언할 때 fun 키워드를 사용한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 변수를 선언할 때에도 마찬가지로 타입을 지정한다. 반환형 함수 fun max(a: Int, b: Int): Int { return if (a > b) a else b } max -> 함수이름 a: Int, b: Int -> 파라미터 목록 Int -> 반환타입 return {..

Kotlin 2022.08.01