일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 소프트웨어
- 알고리즘
- 자바스크립트
- 네트워크
- 보안
- 웹개발
- I'm Sorry
- 사이버보안
- 데이터구조
- 프로그래밍언어
- 컴퓨터공학
- 컴퓨터비전
- 컴퓨터과학
- 클라우드컴퓨팅
- 데이터분석
- 빅데이터
- springboot
- 버전관리
- 디자인패턴
- 데이터베이스
- 인공지능
- 딥러닝
- 머신러닝
- 네트워크보안
- 데이터과학
- Yes
- 파이썬
- 프로그래밍
- 소프트웨어공학
- 자료구조
- Today
- Total
목록restapi (4)
스택큐힙리스트
클린 코드로 마무리하는 To-Do API 리팩터링드디어 실전 프로젝트 마지막 날입니다.그동안 만들어온 To-Do API를 클린 코드 기준으로 리팩터링하고, Swagger로 문서화까지 마무리해보겠습니다.✅ 모듈 통합 & 코드 리뷰To-Do 프로젝트는 다음과 같은 구조로 구성되어 있었습니다:Controller: 클라이언트 요청을 받음Service: 비즈니스 로직 처리Repository: DB와의 통신 담당DTO: 계층 간 데이터 전달 객체마지막 단계에서는 전체 코드를 정리하며 다음 기준으로 리팩터링을 진행했습니다:메서드 책임 분리: 하나의 메서드는 하나의 일만 하도록네이밍 통일성 확보: 직관적인 이름으로 명확히중복 제거: 반복되는 코드는 유틸리티로 추출예외 처리 일관성: 커스텀 예외 + 전역 핸들러 활용응답..
Spring Security와 JWT, OAuth 2.0을 결합해 완전 무상태(Stateless) 보안 아키텍처를 구현하는 방법을 한눈에 정리했습니다. 오늘 따라가면 REST API 백엔드에서도 소셜 로그인 → 회원가입 → JWT 발급 → 만료 → 토큰 재발급 흐름을 손쉽게 완성할 수 있어요.1. 왜 세션 대신 JWT인가?수평 확장성 : 서버 간 세션 공유 필요 X, 로드밸런싱에도 끄떡없음.네이티브·웹·모바일 클라이언트 통합 : 토큰만 전송하면 동일 로직 재사용 가능.2. 핵심 개념 한눈에Access Token : 사용자 정보와 만료 시각(짧게) 포함. HTTP Authorization: Bearer.Refresh Token : 재발급 전용·장수 토큰. DB·Redis에 저장해 탈취 시 강제 로그아웃 가..
1. 왜 ‘스타터’와 ‘자동 설정’부터 배워야 할까?Starter: spring-boot-starter-* 의존성 하나면 관련 라이브러리와 설정이 한꺼번에 준비됩니다.Auto-Configuration: 클래스패스에 올라간 라이브러리를 스프링이 감지해, 빈·설정 파일을 자동으로 구성합니다. 덕분에 “프로젝트 생성 → 코딩 → 실행”까지 단 몇 분!이득: 설정 실수를 줄이고, 비즈니스 로직 개발에만 집중할 수 있습니다.2. spring-boot-starter-web로 5분 만에 REST API 만들기프로젝트 생성Spring Initializr(https://start.spring.io)Dependencies → Spring Web, Lombok 선택Java 17, Gradle/Maven 선택 후 Genera..
1. 오늘 배울 것Spring MVC 흐름: HTTP 요청 → DispatcherServlet → Controller → Service → RepositoryDTO(Data Transfer Object): 계층 간 데이터 이동을 위한 전용 객체글로벌 예외 처리: @RestControllerAdvice + @ExceptionHandlerCRUD 엔드포인트 구현 & Postman으로 테스트2. REST Controller 핵심 잡기@RestController는 반환 값을 JSON/XML 등으로 바로 직렬화해 주므로, View 템플릿 없이 API 서버를 만들 때 필수다.@RestController@RequestMapping("/api/v1/articles")@RequiredArgsConstructorpubli..