본문 바로가기

Spring boot

(95)
도전 과제 풀이 3(Reply) ReplyControllerpackage com.tenco.blog_v3.reply;import com.tenco.blog_v3.user.User;import jakarta.servlet.http.HttpSession;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.DeleteMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.PostMapping;@Required..
도전 과제 풀이 코드 - 2(Board) BoardResponsepackage com.tenco.blog_jpa_step4.board;import com.tenco.blog_jpa_step4.reply.Reply;import com.tenco.blog_jpa_step4.user.User;import lombok.Getter;import lombok.Setter;import lombok.ToString;import java.util.ArrayList;import java.util.List;public class BoardResponse { @Getter @Setter public static class DTO { private int id; private String title; private..
도전 과제 풀이 코드 - 1(User) UserControllerpackage com.tenco.blog_v3.board;import com.tenco.blog_jpa_step4.commom.errors.Exception403;import com.tenco.blog_jpa_step4.commom.errors.Exception404;import com.tenco.blog_jpa_step4.commom.utils.ApiUtil;import com.tenco.blog_jpa_step4.commom.utils.Define;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpSession;import lombok.RequiredArgsConstructor;impo..
JWT 인터셉터 적용 LoginInterceptorpackage com.tenco.blog_v3.common.config;import com.auth0.jwt.exceptions.JWTDecodeException;import com.auth0.jwt.exceptions.TokenExpiredException;import com.tenco.blog_v3.common.errors.Exception401;import com.tenco.blog_v3.common.errors.Exception500;import com.tenco.blog_v3.common.utils.Define;import com.tenco.blog_v3.common.utils.JwtUtil;import com.tenco.blog_v3.user.User;import ..
JwtUtil 만들어 보기 의존성 추가 implementation 'com.auth0:java-jwt:4.4.0'dependencies { // Java jwt lib 가져오기 implementation 'com.auth0:java-jwt:4.4.0' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-mustache' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.spri..
JWT란 뭘까? JWT란 무엇인가?JWT는 JSON Web Token의 약자로, 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식입니다. 예를 들어, 클라이언트와 서버 간에 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 활용합니다. JWT는 JSON 형태로 데이터를 저장하며, 그 데이터는 서명(약간에 암호화)되어 안전하게 교환됩니다.JWT의 구조JWT는 세 부분으로 구성됩니다:Header (헤더): 토큰의 타입과 해싱 알고리즘 정보를 담고 있습니다. 보통 'alg' (알고리즘)와 'typ' (타입)이라는 두 가지 속성이 포함되며, 예를 들어, {"alg": "HS256", "typ": "JWT"} 형태입니다.Payload (페이로드): 주로 사용자 정보나 데이터(claims)를 포함하는..
STEP 05 - RestAPI 컨트롤러 요청과 응답 💡 학습 목표1. REST API에서 DTO를 사용 방법을 연습 한다. 2. Service 레이어에서 Entity 대신 DTO를 반환하는 이유에 대해 이해 한다. 3. Lazy Loading 문제를 해결하고 요청과 응답의 일관성 유지하는 방법에 대해 알아 본다.  application-dev.yml - open-in-view 설정 변경 jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true default_batch_fetch_size: 10 # 한번에 들고오는 개수 설정 de..
STEP 05 - 공통 응답 DTO 및 예외 처리 구조 만들기 💡 학습 목표1. 공통 응답 DTO를 사용하여 일관성 있는 API 응답을 구성하는 방법을 습득한다. 2. 예외 처리(Exception Handling)를 통해 API 호출 시 발생할 수 있는 다양한 예외를 통합된 방식으로 처리하는 방법을 알아 본다.  ApiUtil 클래스 작성ApiUtil 클래스는 모든 API 응답을 동일한 형태로 구성하기 위한 공통 응답 DTO입니다.이를 통해 성공 응답과 에러 응답을 일관된 구조로 제공할 수 있습니다. package com.tenco.blog_v3.common.utils;import lombok.Data;@Datapublic class ApiUtil { private Integer status; // 협의 - 1, 성공 -1 실패 private Str..