1. 개요 API 문서화 툴을 중에서도 특히 Swagger 는 Springdoc 보다도 쉽게 사용할 수 있는 편리한 도구이다. Spring 3.0 버전에서의 API 문서화 툴 사용법을 익히고 적용시켜보자.2. Swagger 란?Swagger는 API 문서화 및 테스트에 사용되는 강력한 도구로, RESTful API를 설계, 빌드 및 문서화하는 데 도움을 준다. Swagger를 사용하면 API 엔드포인트, 매개변수, 응답 형식 및 기타 세부 정보를 정의하고 문서로 자동 변환할 수 있다. 이를 통해 API의 이해도를 높이고 개발자 간의 협업을 용이하게 한다.3. Swagger 사용법(1) 종속성 추가implementation 'org.springdoc:springdoc-openapi-starter-webmv..
Programming/Spring
Kotest 를 사용한 Repositroy, Service Test Code 를 직접 작성해보도록 하겠다. Kotest 의 BehaviorSpec 을 사용하였다.1. Repository Test@DataJpaTest@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)class UserRepositoryTest( @Autowired private val userRepository: UserRepository) : BehaviorSpec() { init { beforeSpec { userRepository.save( User( ..
TDD 및 테스트 코드의 중요성은 어디에서나 쉽게 찾아볼 수 있다.하지만 단편적인 코드만 존재할 뿐 실제 어떻게 사용해야할 지 감이 안잡혔었는데, 최범균님의 세미나 공유 - TDD 소개 및 시연 유튜브를 통해 살짝 감을 잡을 수 있었다. 매우 쉽게 이해할 수 있어 추천한다. 실제 코드와 함께 TDD 를 어떻게 진행해야할 지 살펴보자.1. Test Codeclass UserTest() : BehaviorSpec() { init { given("정상적인 유저가 존재할 때") { `when`("유저의 비밀번호를 암호화하면") { then("비밀번호가 암호화되어야 한다") { } } ..
회원가입을 위해 Dto 를 생성 시에 validation 방법과 Kotest 를 사용한 테스트 코드를 작성해보자.1. Dtoclass UserDtoRequest( @field:NotBlank @field:Email @JsonProperty("email") private val _email: String?, @field:NotBlank @field:Pattern( regexp = "^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#\$%^&*])[a-zA-Z0-9!@#\$%^&*]{8,20}\$", message = "영문, 숫자, 특수문자를 포함한 8~20자리로 입력해주세요" ) @JsonProperty("password")..
1, 개요N:M 관계를 여러 이유로 1:N, M:1 로 풀어 엔티티를 생성했습니다.현재 Member 와 Group 기능의 엔티티를 생성하려 했으나 Mysql 에서 "group", "groups" 가 모두 예약어로 생성 안되는 에러가 계속 발생했습니다.따라서 Member 와 Team 으로 중간 MemberTeam 테이블을 놓고 다대다 관계를 생성했습니다.이후 로그인 된 Member 가 속한 Team 을 모두 조회하려는 로직을 짜던 중 에러가 발생했습니다.가장 이해가 안되는 부분은 지금까지 다른 axios 의 http 요청에서는 문제가 없었는데 갑자기 localhost:3000 으로 데이터 요청이 오가고 400 Bad Request 가 실행된다는 점.그리고 response 의 data 에 백엔드에서 보내는 ..
1. 개요프로젝트를 진행하면서 테스트에 중요성은 항상 강조되었습니다. 하지만 실제 간단한 개발만 진행했다는 이유로 테스트 코드는 등한시했었습니다.테스트는 코드의 무결성을 보장해주는 최소한의 안전 장치입니다. 코드가 변경되더라도 핵심 로직이 테스트 코드로 작성되어있다면 변경된 기능의 안정성을 신뢰도 높게 검증할 수 있습니다. 이외에도 TDD 등의 개발 방법론의 장단점은 어디에서나 쉽게 찾아볼 수 있습니다. 본 게시글에서는 Kotlin 에 적합한 테스트 코드 방법을 알아보고 적용시켜보고자 합니다.2. 단위 테스트실제 테스트 코드를 살펴보기 앞서 테스트에 대해 살펴보겠습니다. 단위 테스트의 중요성은 강조되지만 학부 수준에서 테스트 코드의 중요성을 실감하기에는 어려움이 있습니다. 단위 테스트는 코드를 수정하거나..
추가 작업으로 일정한 Response 형식을 반환하고 ExceptionHandler 를 추가하겠습니다.1. BaseResponsedata class BaseResponse( val resultCode: String = ResultCode.SUCCESS.name, val data: T? = null, val message: String = ResultCode.SUCCESS.msg,)응답은 다음과 같이 나타낼 것입니다. Data 와 message 를 분리하고 Exception 에 Custom message 가 정확하게 뜨는 것을 예상합니다.2. ExceptionHandler@RestControllerAdviceclass CustomExceptionHandler { @ExceptionHa..
구조를 우선적으로 파악한 이후 Kotlin 으로 컴팩트하게 JWT Token 처리를 진행해보겠습니다.1. CustomUserDetails, CustomUserDetailsServiceclass CustomUser( val userId: Long, userName: String, password: String, authorities: Collection) : User(userName, password, authorities)@Serviceclass CustomUserDetailsService( private val memberRepository: MemberRepository,) : UserDetailsService { override fun loadUserByUsernam..