-
백엔드 데브코스 12기 37일차
이 날은 로그인 기능과 API Key를 이용한 인증 방식을 공부했다. 로그인 기능을 직접 구현하는 흐름을 따라가면서 회원 조회부터 비밀번호 확인, 로그인 성공 후 API Key를 반환하는 과정까지 정리할 수 있었다.특히 로그인에 성공했을 때 비밀번호를 다시 사용하는 것이 아니라, 회원에게 발급된 API Key를 이용해 이후 API 요청을 인증한다는 점을 배울 수 있었다.API Key와 Postman 활용API Key를 실제 API 요청에서 어떻게 관리하고 사용할 수 있는지도 함께 공부했다.Postman에서는 Collection Variables를 이용해 baseURL이나 apiKey처럼 여러 요청에서 반복적으로 사용하는 값을 변수로 관리할 수 있었다. 특히 로그인 요청이 성공하면 After Respons..
2026.09.03
-
[Postman] API Key 변수 관리와 Authorization Header 활용하기
API를 테스트하면서 매번 baseURL이나 apiKey를 직접 입력하는 것은 번거로운 작업이다.Postman의 Collection Variables와 Authorization을 활용하면 이러한 값을 변수로 관리하고, 여러 요청에서 재사용할 수 있다.1. Collection VariablesPostman에서는 Collection의 Variables에 자주 사용하는 값을 변수로 등록할 수 있다.예를 들어 서버 주소를 baseURL이라는 변수로 저장하면 다음과 같이 요청 URL에서 사용할 수 있다.{{baseURL}}/api/v1/postsapiKey도 변수로 등록하여 여러 요청에서 사용할 수 있다.{{apiKey}}{{변수명}} 형식으로 작성하면 Postman에서 해당 변수에 저장된 값으로 자동으로 치환한..
2026.09.02
-
[Spring] 로그인 기능 구현하기
1. 로그인 기능의 기본 흐름로그인은 사용자가 입력한 아이디와 비밀번호를 서버에서 확인하고, 인증에 사용할 정보를 반환하는 과정이다.전체적인 흐름은 다음과 같다.아이디 + 비밀번호 입력 ↓서버에 로그인 요청 ↓아이디로 회원 조회 ↓회원이 존재하는지 확인 ↓비밀번호 확인 ↓로그인 성공 ↓API Key 반환 아이디가 존재하지 않거나 비밀번호가 일치하지 않는 경우에는 로그인에 실패하도록 처리한다.2. Member에 로그인에 필요한 정보 저장하기회원 Entity에는 로그인에 필요한 아이디, 비밀번호와 함께 로그인 이후 인증에 사용할 apiKey를 저장한다. @Entity@Getter@NoArgsConstructorpublic class ..
2026.09.02
-
백엔드 데브코스 12기 37일차
이 날은 Spring에서 예외 처리와 API 인증 방식을 중심으로 공부했다.예외 상황마다 클래스를 만드는 방법도 있지만, 작은 프로젝트에서는 ServiceException으로 예외를 통일하고 GlobalExceptionHandler에서 일괄 처리하는 방법을 익혔다. 또한 API 응답의 resultCode와 메시지를 활용해 예외 상황을 구분하는 방식도 정리했다.이후에는 API Key를 이용한 인증 처리를 공부했다. 아이디와 비밀번호를 계속 인증 정보로 사용하는 대신, 회원에게 UUID 기반의 API Key를 발급하고 이를 이용해 사용자를 식별하는 흐름을 이해했다. 특히 API 요청에서 API Key를 받아 회원을 조회하고, 유효한 회원인지 확인한 후 요청을 처리하는 과정을 직접 구현해보며 인증의 기본적인 ..
2026.09.02
-
[Spring] API Key를 이용한 인증 처리
로그인 이후 인증을 유지하기 위해 프론트엔드에 아이디와 비밀번호를 저장하는 것은 적절하지 않다.특히 비밀번호는 매우 민감한 정보이기 때문에 가능한 한 클라이언트에서 계속 가지고 있지 않는 것이 좋다.REST API는 기본적으로 무상태성(Stateless)을 지향한다.즉, 서버가 클라이언트의 상태를 계속 저장하고 관리하기보다는 각 요청에 필요한 인증 정보를 클라이언트가 전달하는 방식을 사용한다.따라서 다음과 같은 방식으로 인증 정보를 전달할 수 있다.대신 아이디와 비밀번호를 직접 전달하지 않고, 인증을 위한 별도의 무작위 값인 API Key를 사용하는 방식으로 개선할 수 있다.2. API Key 발급회원이 생성될 때 UUID를 이용해 API Key를 생성한다.@Entity@Getter@NoArgsConst..
2026.09.01
-
[Spring] 예외 처리 | ServiceException과 전역 예외 처리
1. 예외가 많아질 때 발생하는 문제서비스를 구현하다 보면 다양한 예외 상황이 발생한다.예를 들어 로그인만 하더라도 다음과 같은 경우가 있을 수 있다.상황예외아이디가 존재하지 않음NotFoundUsername비밀번호가 일치하지 않음MismatchPassword블랙리스트 사용자BlacklistUsername인증 대기 상태NotAuthentication예외 상황마다 별도의 클래스를 만드는 것이 정석적인 방법이 될 수 있다.하지만 작은 프로젝트에서 모든 예외 케이스마다 클래스를 만드는 것은 오히려 복잡도를 높일 수 있다.따라서 프로젝트 규모에 따라 적절한 예외 처리 방식을 선택할 필요가 있다.2. RsData를 이용한 응답 형식RsData는 API 응답을 일정한 형식으로 전달하기 위해 사용하는 클래스이다.pu..
2026.09.01
-
1차 프로젝트 회고
8월 24일부터 31일까지 프로그래머스 1차 프로젝트를 진행했다.모든 팀이 동일한 주제로 프로젝트를 진행했기 때문에, 같은 요구사항을 어떻게 설계하고 구현하는지가 중요했다.이번 프로젝트에서 나는 공통 예외 처리, 주문 내역 조회 및 페이지네이션, 이메일 기반 주문 조회, 이메일 확인 기능, 상품 검색 기능을 담당했다.공통 예외 처리프로젝트 초반에는 여러 API에서 발생하는 예외를 일관된 형태로 처리할 수 있도록 공통 예외 처리 구조를 구현했다.ApiException을 만들어 HTTP 상태 코드와 에러 코드를 함께 관리하고, GlobalExceptionHandler에서 해당 예외를 한 곳에서 처리하도록 구성했다. 클라이언트에는 code, message, timestamp를 포함한 ErrorResponse를..
2026.09.01
-
백엔드 데브코스 12기 36일차
이 날은 프로젝트 발표를 진행한 날이었다. 내가 발표를 맡게 되어 주말부터 발표 준비를 계속해서 진행했다.1. 발표 자료 수정주말 동안 PPT를 계속 읽어보면서 우리 팀이 실제로 구현한 기능과 구현하지 않은 기능을 하나씩 확인하고 수정했다. 처음에는 만들어둔 발표 자료를 그대로 사용하면 될 것 같았지만, 내용을 다시 살펴보니 실제 구현 내용과 조금 다르게 작성된 부분도 있었고, 발표에서 추가로 설명하면 좋을 기능들도 있었다.그래서 어떤 기능을 발표에 포함하면 좋을지 계속 고민하면서 팀원들에게 자료 수정을 요청했다. 발표 자료는 한 사람이 만드는 것이 아니라 팀에서 실제로 개발한 내용을 정확하게 담아야 하기 때문에, 각 기능을 담당한 팀원들에게 구현 내용을 확인하면서 수정하는 과정이 필요했다.디자인도 여러..
2026.08.31
-
백엔드 데브코스 12기 35일차
이 날은 카페 메뉴 관리 서비스의 주문 조회와 상품 검색을 중심으로 기능을 개선하고, 오후에는 발표 자료를 준비한 날이었다. 처음에는 주어진 요구사항에 맞게 기능을 구현하는 데 집중했지만, 개발을 진행하면서 실제 사용자의 입장에서 불편한 부분을 발견하고 이를 개선하는 경험을 할 수 있었다.특히 상품 검색 기능 개선, 주문 목록 정렬, 상품 목록 페이지네이션 및 UI 개선을 진행하면서 단순히 API를 구현하는 것보다 프론트엔드와 백엔드가 실제 서비스에서 어떻게 연결되는지 고려하는 것이 중요하다는 것을 배울 수 있었다.1. 상품 검색 기능 개선가장 집중해서 개선한 기능은 상품명 검색이었다.기존 상품 검색은 사용자가 상품명을 정확하게 입력해야 검색되는 방식이었다. 하지만 실제 서비스를 사용하는 입장에서는 상품..
2026.08.30