@RestController
class UserController {
@GetMapping("/users/{id}")
fun getUser(@PathVariable id: Long): ApiResponse<User> {
val user = userService.findById(id)
return ApiResponse("조회 성공", user)
}
}// 예외를 던지면 GlobalExceptionHandler가 자동으로 처리
throw IllegalArgumentException("잘못된 파라미터") // → 400 Bad Request
throw NoSuchElementException("데이터 없음") // → 404 Not Found
throw AccessDeniedException("권한 없음") // → 403 Forbidden// 성공
{
"msg": "조회 성공",
"data": { "id": 1, "name": "서울" }
}
// 에러
{
"msg": "데이터를 찾을 수 없습니다",
"data": null
}// 모든 요청 허용 (개발 편의)
.authorizeHttpRequests { auth -> auth.anyRequest().permitAll() }
.csrf { it.disable() }- OAuth2 인증 활성화
- CSRF 보호 활성화
- 역할 기반 접근 제어
@Cacheable("weather") // 30분 캐시
@Cacheable("tour") // 1시간 캐시
@CacheEvict(value = "weather", allEntries = true) // 캐시 삭제- 주요 URL 정보 (Swagger, H2 Console)
- 환경변수 상태 체크
- Redis 서버 설정 가이드
- API 엔드포인트 목록
- Swagger UI: http://localhost:8080/swagger-ui.html
- H2 Console: http://localhost:8080/h2-console
- Health Check: http://localhost:8080/actuator/health
- 예외는 그냥 던지세요 - 자동으로 적절한 HTTP 상태 코드로 변환
- ApiResponse로 감싸세요 - 일관된 응답 형식 보장
- @Cacheable 활용 - API 성능 향상
- 개발 시작 정보 확인 - 콘솔에서 필요한 모든 정보 제공
설정 파일 위치: src/main/kotlin/com/back/koreaTravelGuide/common/config/