[Web] NestJS에서 응답에 쿠키 설정하기
·
이론 공부/Web
쿠키를 사용한 통신클라이언트와 통신할 때 필요한 정보를 쿠키에 저장해서 전달하는 경우가 종종 있다. 가장 흔한건 token을 쿠키에 넣어서 클라이언트에게 전달하면, 클라이언트는 이후 요청을 보낼 때 받은 쿠키를 알아서 넣어서 서버에게 전달하게 된다.나도 refresh token을 쿠키로 전달하기 위해서 서버의 응답에 쿠키 설정을 해주어야 했다. 내가 구현해야 하는 것🧐나는 silent refresh를 구현하고 싶었기 때문에 요청 헤더에 잇는 refresh token을 가져와서 그 token을 사용해 새로운 refresh token을 발급하고, 새로 발급한 refresh token을 응답 헤더 쿠키에 새로 넣어주는 코드를 구현하려고 한다. NestJS에서 응답 헤더에 쿠키 적용하기우선 요청 헤더에 있는 ..
[Web] JWT토큰(Access token, Refresh Token) 전달 방식, 저장 위치
·
개발 공부/Web
내가 하고 있는 서비스는 SSO로그인만 지원하지만, SSO 로그인이 원활하지 않아서 테스트 할 때는 Token기반의 로그인을 사용하고 있다. 내가 처음부터 구현한 서비스가 아니라서 예전에 다른 사람이 구현해놓은 코드를 이번에 개선하게 되면서 공부한 내용을 정리해보려고 한다.🧐로그인 방식에는 어떤 방식이 있을까세션 방식sequenceDiagram participant c as Client participant s as Server participant d as DB c->>s: 로그인 요청 s->>s: 세션 id 생성 s->>d: 세션 id와 유저 정보 저장 s->>c: 세션 id 전달 c->>s: 요청할 때 세션 id를 담아서 요청Client 가 서버에 로그인..
2025 회고
·
기타/회고
오랜만에 블로그 글을 작성해보려고 한다.이제 25년이 끝나가는데 마지막 블로그가 23년도라니.. 한창 취업 준비하고, 면접보고 그래서 정신없이 살다보니 블로그에 신경쓸 틈이 없었다.23년도 상반기에 열심히 준비해서 면접을 그래도 몇군데 볼 수 있었고, 정말 운이 좋게도,, 1군데에서 최종 합격을 받아서 좋은 연봉과 복지를 갖춘 회사에서 직장인으로 지내는 중이다. 그동안의 생활지금까지 생활을 간략하게 정리해보자면23년 7월에 입사를 하게 되었고, 여러명의 동기들을 만나고, 인경원에도 다녀오면서 새로운 사람들을 많이 만났다.남은 23년은 동기들과 추억 쌓고, 회사 적응하면서 보냈던 것 같다.24년도부터는 제대로 된(?) 직장인의 생활이 시작되었다.그러나 타이밍이 엇나가거나 회사 사정상 내가 담당하는 프로젝트..
[Spring+MySql] Spring에 AWS RDS(MySQL) 연결하기 / driver 에러 해결
·
개발 공부/Spring
AWS에서 RDS를 생성하고, 기존에 세팅해놓은 백엔드 프로젝트에 연결하는 걸 해봤다. 우선 AWS에서 RDS를 생성했다. 그 후, 다른 블로그를 참고해서 build.gradle과 application.yml을 세팅했다. 세팅한 내용은 다음과 같다. spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: [AWS RDS 엔드포인트] username: [master name] password : [password] jpa: hibernate: ddl-auto: update properties: hibernate: format_sql: true 엔드포인트는 RDS 세팅 후 정보란에 나와있다. username과 password는 DB생성할 때..
[개인프로젝트] 개인 프로젝트 시작!
·
개발 공부/Project
개인 프로젝트 시작 ! 싸피 생활을 끝내고 취업 준비생으로서 열심히 공부 중에 있다. 싸피에서 프로젝트를 여러번 하긴 했지만, 어려운 문제를 해결해나간 경험이라던지, 최적화 방면에서 깊은 고민을 한 경험이 부족하다고 생각해서 개인 프로젝트를 해야겠다고 전부터 마음 먹었었다. 프론트엔드 개발자로 준비를 하고 있기 때문에 처음에는 백엔드를 구해볼까 생각도 했었는데 전부터 백엔드를 맡아서 해보고 싶기도 했고, 아직 프론트가 맞는지, 백엔드가 맞는지 잘 모르는 상태라서 이 고민에 대한 결론을 확실하게 내리기 위해서 프론트와 백엔드를 다 하는 것을 도전해보기로 했다. 우선 프론트는 React와 TypeScript를 사용하려고 생각중이다. React, TS는 사용 경험이 있어서 어느정도 다룰줄은 알지만 아직까지도 ..
[JavaScript] JS null 병합 연산자 ??
·
개발 공부/JavaScript
null 병합 연산자 ?? 이게 무엇인가? 사실 첨에 봤을땐 우리가 흔히 보는 물음표인데 코딩할 때는 어떻게 쓰이나.. 했는데 검색해봐도 이름을 모르니 그냥 물음표로 인식해버린다..ㅎ 그런데 생각보다 흥미로운 기능을 하는 친구라서 소개해보려고 한다. 사실 이 글도 구글링이 잘 될지는 모르겠지만,,, null 병합 연산자 ES11(ECMAScript2020)에서 도입된 null 병합 연산자 ??은 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다. 이게 무슨말인지 코드를 보면서 설명해보면 보통 JS로 코딩을 하면서 다들 || 연산자는 사용해본적이 있을 것이다. || 연산자는 보통 기본값을 설정할 때 사용된다. let foo = n..
[SpringBoot] 등록/수정/조회 API 만들기 - 그리고 중단..
·
개발 공부/Spring
API를 만들기 위한 3개의 클래스 1. Request 데이터를 받을 Dto 2. API 요청을 받을 Controller 3. 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 스프링 웹 계층은 다음과 같다. 비즈니스 처리를 담당하는 부분은 Domain이다. 모든 로직이 서비스 클래스 내부에서 처리가 된다면 서비스 계층이 무의미하고, 객체란 단순히 데이터 덩어리 역할을 하게 된다. (자세한 내용은 책 참고해주세요!) 그렇기 때문에 이 실습에서는 도메인 모델을 다루고 코드를 작성한다. 각각의 클래스 생성 (경로는 패키지명 참고) package com.jojoldu.book.springboot.web.dto; import com.jojoldu.book.springboot.domain.posts.Po..
[SpringBoot] JPA로 데이터베이스 다루기
·
개발 공부/Spring
현대 웹 애플리케이션에서 관계형 데이터베이스(RDB)는 빠질 수 없는 요소이다. Oracle, MySQL 등 다양하게 쓰이고 있고, 그러다보니 객체를 관계형 데이터베이스에서 관리하는 것이 중요하다. 관계형 데이터베이스를 사용하는 상황에서 SQL는 피할 수 없는 요소이다. 하지만 , SQL은 유지보수하는 것이 어렵고, 패러다임 불일치 문제가 발생한다. 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰져있지만, 객체 지향 프로그래밍 언어는 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술이다. 이 두개의 패러다임이 서로 다른데, 객체를 데이터베이스에 저장하려고 하니 문제가 발생하고, 이를 패러다임 불일치라고 한다. JPA는 이러한 문제점을 해결하기 위해 등장한다. 서로 지향하는 바가 다른 ..
[SpringBoot] 롬복 소개 및 설치
·
개발 공부/Spring
롬복이란? 롬복은 자바 개발에서 자주 쓰이는 Getter, Setter, 기본 생성자 등을 어노테이션으로 자동 생성해준다. 프로젝트에 롬복 라이브러리 다운로드 build.gradle에 implementation('org.projectlombok:lombok') 추가 후 gradle을 새로고침해준다. 롬복 플러그인 설치는 플러그인 마켓에서 설치한 뒤 여기를 체크해주면 된다. 플러그인은 한번 설치하면 되지만 해당 과정은 프로젝트 마다 설정해줘야한다. 롬복 테스트 package com.jojoldu.book.springboot.web.dto; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter //선언된 모든 필드의 get메소드 생성 @R..
[Springboot] 스프링 부트에서의 테스트 코드
·
개발 공부/Spring
스프링부트에서의 테스트 코드 최근 회사 채용 공고를 보면 테스트 경험에 대한 경험을 요구한다. 또한 TDD라는 테스트 주도 개발 경험을 요구하는 곳들도 있다. 참고책에서는 TDD가 아닌 단위 테스트 코드에 대해 기술한다. 테스트 코드를 작성해야 하는 이유? 1. 빠른 피드백 - 개발을 하는 과정에서 테스트 코드가 없다면 코드 수정 -> 프로그램 실행 -> API테스트 도구로 HTTP 요청 -> 출력 후 검증 -> 다시 코드 수정 과정을 거친다. 하지만 테스트 코드가 작성된다면 코드 수정 후 간단하게 테스트 코드만 실행시키면 되기 때문에 빠른 피드백을 받을 수 있다. 2. 검증 - 테스트 코드를 작성하면 직접 print문을 작성하여 눈으로 확인해야하는 것들을 자동으로 검증해준다. 3. 기능 보호 - 기존 ..