Dev/Spring 11

[Spring] HTTP 201 CREATED 상태 코드와 Location 헤더

201 CREATED 는 "POST" 요청 등 서버에 새로운 리소스를 생성했을 때 사용하는 HTTP 상태 코드이다. 즉, 단순히 "요청이 성공했다." 라는 의미가 아니라, "서버에서 새로운 리소스가 생성되었다" 라는 의미를 명확히 전달하는 HTTP 상태 코드이다. 해당 응답에는 생성된 리소스의 URI를 알려주기 위해서 Location 헤더를 사용하는 것이 HTTP 표준에서 강하게 권장된다.더보기관련 표준[RFC 7231 - 6.3.2. 201 Created] RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and ContentThe Hypertext Transfer Protocol (HTTP) is a stateless \%application-..

Dev/Spring 2025.06.16

[Spring] GET Method에 RequestBody 요청 적합한가?

HTTP 메서드 중 GET 메서드에서는 보통 URL 쿼리 파라미터를 통해 데이터를 전달한다.POST와 PUT 같은 메서드는 RequestBody 를 활용하는 것과는 차이가 있다. 왜 그런걸까? GET 메서드에 RequestBody를 포함하는 것은 HTTP 표준에 맞지 않는다.이에 관련된 관련 문서들을 찾아본 결과 다음과 같다. RFC 7231 문서에서는 GET 요청 메시지 내 Payload(Body)에 대해 정의된 의미가 없음을 명시하고 있다.이 말은 즉, 정의된 의미가 없기 때문에 서버에서 무시한다는 의미로 해석할 수 있다.이러한 설계는 GET의 목적이 URL 및 쿼리 매개변수를 통해 리소스를 검색하는 것이지 POST와 달리 데이터를 제출하는 것이 아니기 때문더보기(출처: RFC 7231- HTTP/1..

Dev/Spring 2025.06.16

[Spring] JWT(JSON Web Token)

JWT와 Token을 사용한 로그인 방식은 서버에 세션을 저장하지 않고 클라이언트측에서 인증 정보를 저장하는 방식이다.주로 스케일링, 분산 시스템에서 많이 사용된다.서버에 Session을 저장하지 않는다 → 여러 서버 간에 인증 상태를 공유하는 데 유리하다.JWT (JSON Web Token)헤더(Header), 페이로드(Payload), 서명(Signature)으로 구성된 자체 포함된 인증 토큰이다.헤더(Header)JWT 타입과 서명에 사용된 알고리즘을 지정한다.{ "alg": "HS256", // 알고리즘 (HMAC SHA-256) "typ": "JWT"}페이로드(Payload)사용자 정보, 권한, 토큰의 만료 시간 등 클레임이 포함된다.등록된 클레임: iss(발행자), exp(만료 시..

Dev/Spring 2025.05.29

[Spring] Session & Cookie (로그인 인증)

Session(세션)과 Cookie(쿠키)는 웹 개발, 인증(로그인) 기능 구현에 필수 개념으로 알고 있다. 최근 프로젝트를 진행하면서 로그인 인증을 구현할 때 세션과 쿠키를 활용하여 구현했었는데, 조금 더 정확히 이해할 필요가 있겠다.Cookie클라이언트에 저장되는 데이터 조각Key-Value 형태로 저장되고, 클라이언트가 서버에 요청할 때마다 자동으로 전송된다.사용자 추적, 세션 ID 전달, 자동 로그인 정보 저장 등에 활용된다.그 외에도 장바구니나 마지막 방문 페이지 등 다양한 기능에 사용된다.단, 보안에 취약하기 때문에 토큰 방식(JWT 등)을 사용하거나 쿠키 값 자체를 암호할 필요가 있다.유효 기간을 설정할 수 있다 → 일시적 / 지속적인 저장 가능하다.GET /home HTTP/1.1 Hos..

Dev/Spring 2025.05.26

[Spring] Servlet Filter

Servlet Filter요청(Request) 과 응답(Response) 을 처리하는 중간 필터 역할하는 객체이다. Servlet 컨테이너에 의해 요청이 Servlet에 도달하기 전,혹은 Servlet이 응답을 클라이언트에 전달하기 전에 특정 작업을 수행하도록 해준다.목적요청 전 처리: 필터는 Servlet이 요청을 처리하기전에 실행된다.로그 기록, 인증, 권한 검사 등을 할 수 있다.응답 후 처리: 필터는 Servlet이 응답을 처리한 후 클라이언트에게 응답을 보내기 전에 실행된다.,응답 수정, 압축, 보안 헤더 추가 등을 할 수 있다.주요 메서드doFilter(): 필터의 주요 동작을 처리하는 메서드. 아래와 같은 내용을 처리할 수 있다.요청과 응답 변경필터는 doFilter() 메서드에서 요청(Re..

Dev/Spring 2025.05.22

[Spring] 연관 관계 매핑

지난 프로젝트를 JDBC로 구현할 때 가장 힘들어했던 부분이 Entity끼리 관계를 맺는 부분이었던 것 같다. schedules 테이블(기존)에서 작성자명을 분리해서 별도의 작성자 테이블(authors)로 관리를 하고, 이 두 테이블을 이어주기 위해서 schedules 테이블에 author_id를 추가하면서 외래 키로 설정, 그리고 authors 테이블에 id 컬럼을 생성 후 Primary Key로 설정하여 이 두 테이블을 연결하는 매개체로 하였다. 물론 말로는 쉽고 SQL만 생각해봤을 때는 단순 JOIN 영역이기 때문에 어렵지는 않았지만 여기에 Java, JDBC로 구현하려니까 여간 복잡하고 헷갈려서 힘들었던 것 같다. 이런 식으로 JDBC에서 연관 관계 표현을 코드로 구현할 수 있다. 다만, JDBC..

Dev/Spring 2025.05.19

[Spring] JPA

지난 JDBC를 이용하여 프로젝트를 진행하면서 기존 Spring Boot에 직접 DB를 연결하고 테이블도 생성하며, JDBC를 활용하여 SQL 쿼리로 DB를 다루는등 개발자가 직접 많은 것을 해야되었다.또한 이 과정에서 반복되는 코드가 너무 많기도 하고 객체 지향 설계에서도 멀어져갔다. 그래서 도입된 기술이 바로 JPA (Java Persisterce API) 이다.JPA (Java Persisterce API)Java 어플리케이션에서 객체 지향 프로그래밍 모델을 사용하여 DB와 상호작용할 수 있도록 해주는 기술이다. 객체 지향 프로그래밍에서 객체를 DB 테이블로 매핑해주는 역할객체와 DB 간의 데이터를 자동으로 변환해주는 도구대충 Java 어플리케이션에서 데이터 베이스(DB)와 상호작용 가능하도록 도와..

Dev/Spring 2025.05.15

[Spring] IP / Port / Domain / URL

그럼 클라이언트와 서버 간의 통신을 할 때, 클라이언트가 보낸 요청을 서버는 어디서 받아서 어떻게 처리를 하는 것일까? 이것에 대해 알려면 IP 주소, 포트(Port) 번호, 도메인(Domain) 그리고 URL(Uniform Resource Locator)를 알아야 한다.IP(Internet Protocol) 주소IP 주소는 서버의 고유한 식별자로, 인터넷에서 서버를 찾을 수 있는 유일한 주소 역할을 하기 때문에 이를 통해 서버 간의 통신을 가능하게 한다. (쉽게 말하면 각 기기 간의 통신을 식별할 수 있는 전화번호라고 생각하면 좋을 듯..) 클라이언트가 서버와 연결할 때, 서버의 IP로 요청을 보내고서버는 그 요청을 처리하고 응답을 클라이언트로 보낸다.이와 같은 통신에는 지정한 IP 주소에 데이터를 ..

Dev/Spring 2025.05.13

[Spring] 클라이언트 - 서버 간 통신 흐름

향후 Web Application을 실제 개발하기 위해서는 클라이언트와 서버 간의 통신 흐름을 알아야 한다.왜 알아야 할까?효율적인 API 설계를 위해→ RESTful API 설계와 HTTP 메서드(GET, POST, PUT, DELETE 등)를 올바르게 활용 가능디버깅 / 문제 해결을 위해→ 오류 발생 시 어떤 오류인지 정확히 파악하고 해결 가능보안 / 최적화를 위해→ HTTPS를 사용한 암호화된 통신, 캐싱 전략 구현, 데이터 압축, 비동기 통신 등을 활용하여 응답 속도 개선 가능전체적인 시스템 흐름 파악을 위해 → 백엔드와 프론트엔드의 상호작용 명확히 이해하고, 시스템 구조에 대해 파악 가능클라이언트가 요청을 보내는 과정클라이언트에서 URL을 입력 or 버튼 클릭 → 해당 요청을 서버로 보내기 위한..

Dev/Spring 2025.05.09

[Spring] HTTP 기본 구조

Spring은 주로 Web Application 백엔드를 만들기 위한 프레임 워크이다.Web은 기본적으로 HTTP의 요청과 응답의 흐름으로 동작하고 있는 만큼 HTTP 구조에 대해 알아보도록 하자 HTTP란?HTTP = HyperText Transfer Protocol, 웹의 기반 통신 규약이다.클라이언트(브라우저 등)와 서버가 데이터를 주고받을 때 사용하는 약속된 규칙브라우저에서 http://naver.com 입력하면 > 1. 브라우저는 HTTP 요청을 NAVER에 보내게 되고,2. 보낸 요청에 대해 NAVER의 Web 서버가 응답을 준다 (HTML, CSS, JS 등 리소스)3. 브라우저는 그걸 해석한 후 웹페이지를 그려준다 Spring으로 만드는 서버는 HTTP 요청을 받고 HTTP 응답을 돌려주는..

Dev/Spring 2025.05.07