[개발 일기] 2025.05.27 - Security Password 가 뭐지
·
개발 일기
💡 개요 Spring Boot에서 Spring Security을 적용하고 실행하면 아래와 같은 로그가 뜬다. Using generated security password: a2225d7b-5164-4477-abb2-81bd9faf14a9This generated password is for development use only. Your security configuration must be updated before running your application in production. 이게 뭔 말이고 🛠️ Security Password Spring Security 프레임워크를 프로젝트에 설치하면 자동으로 로그인 폼을 만들어준다. localhost:8080 으로 접속하면 자동으로 /logi..
[개발 일기] 2025.05.26 - 쿼리 파라미터 vs Path Variable
·
개발 일기
💡 개요 RESTful API를 설계할 때, GET 요청을 사용할 경우 일반적으로 리소스 자체를 식별할 때는 Path Variable을 사용하고, 리소스를 필터링, 정렬, 페이징 등 조작할 때는 쿼리 파라미터를 사용한다고 한다. 왜 그럴까..? 🛠️ Path Variable Path Variable은 URL 경로에 포함되어 리소스의 고유한 식별자 역할을 한다. 예를 들어, 특정 사용자나 상품, 게시글처럼 "하나의 특정 리소스" 를 조회할 때 사용한다. GET /members/123GET /products/456GET /boards/789 위 요청은 각각 ID가 123인 사용자, 456인 상품, 789인 게시글이라는 단일 리소스를 조회하는 예이다. 📌 언제 사용하나? 특정 리소스의 상세 정보..
[개발 일기] 2025.05.25 - 일대일 관계에서 연관 관계의 주인
·
개발 일기
💡 개요 보통 다대일 관계일 때는 다쪽이 연관 관계의 주인이기 때문에 다쪽에 외래 키가 있다. 그렇다면 일대일 관계에선 어떨까? 🛠️ 일대일 관계 위에서 언급한 것 처럼 연관 관계 주인이란 외래 키를 관리하는 테이블이나 엔티티를 말한다. 보통 다 쪽에서 외래 키를 관리하는 데 이유는 다음 예시를 보면 쉽게 알 수 있다. 사용자와 게시글의 관계@Entitypublic class Member { @Id @GeneratedValue private Long id; ...} @Entitypublic class Post { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "member_id..
[개발 일기] 2025.05.24 - REST API의 URL에 대한 개인적인 생각
·
개발 일기
💡 개요 오늘 API 명세서를 작성하다가 여러 가지 고민거리가 생겼다. 오늘은 그 고민에 대해 정리해 보자. 🛠️ 복수 or 단수 난 최근까지 REST의 URL을 나타낼 때/api/v1/member/api/v1/board 이런 식으로 단수형으로 표현했다. 하지만 이는 REST의 URL 규칙에 어긋난다고 한다. REST에서는 일반적으로 "리소스는 복수형"으로 표현하는 것이 권장된다./api/v1/members/api/v1/boards 이유는 리소스의 집합(복수)을 다루는 것이라는 REST의 철학 때문이다. 만약 회원 데이터 중에서 한 회원의 정보를 조회할 경우 /members/{id} 와 같이 개별 리소스를 표현할 수 있고, /members 을 통해 회원 리스트를 자연스럽게 조회할 수 있다. ..
[개발 일기] 2025.05.23 - LocalDateTime vs Long (에포크 타임)
·
개발 일기
💡 개요 보통 백엔드에서 프론트엔드로 LocalDateTime와 같은 시간 데이터를 응답할 때, Long 타입으로 변환해서 전달하는 것이 나은지, 아니면 LocalDateTime 타입 그대로 전달하는 것이 나은지 고민한다. 오늘은 두 방식에 대해 정리해 보자. 🛠️ LocalDateTime LocalDateTime을 그대로 클라이언트에게 응답한다면 가장 큰 장점은 개발자가 알아보기 쉽다. 그 이유는 2025-05-23T14:30:00 이런 형식으로 응답이 되는데, 딱 봐도 날짜와 시간을 알 수 있기 때문이다. 하지만 LocalDateTime의 가장 큰 단점은 타임존을 포함하지 않기 때문에 혼동이 생길 수 있다. 만약 서버와 클라이언트가 다른 시간대(서버는 한국, 클라이언트는 미국)를 사용한..
[개발 일기] 2025.05.22 - JavaScript 얕은 복사?
·
개발 일기
💡개요 리팩터링 2탄을 읽다가 JS의 얕은 복사 코드를 봤는데, 너무 어색하다. 자바에선 사용해본 적이 없는 문법이라서 그런 것 같다. 이게 뭔지 정리좀 해보자. 🛠️ 얕은 복사 자바스크립트의 얕은 복사란 객체나 배열을 복사할 때, 최상위 수준의 값만 복사하고 중첨된 객체나 배열은 참조값만 복사하는 방식이다. ..? 뭔 말이고.. 자바를 사용하는 난 난생 처음들어보는 문장이다. 쉽게 설명해보자면 int나 double, boolean 같은 기본 타입은 값 자체가 복사돼서 완전히 독립적인 복사본이 만들어진다. 반면, 배열이나 객체는 참조 타입이라서 얕은 복사를 하면 원본의 주소(참조)를 공유하게 된다. ⚙️ 기본 값 복사let a = 10;let b = a; // 값 복사b = 20;con..