본문 바로가기
반응형

전체 글166

[Spring] 4주차: REST API와 DTO 4주차: REST API와 DTO목표: 현대적인 웹 애플리케이션의 표준 아키텍처인 REST(Representational State Transfer)를 이해합니다. @RequestBody를 통해 JSON 데이터를 서버에서 받는 방법을 배우고, 계층 간 데이터 전송을 위한 객체인 DTO(Data Transfer Object)의 필요성과 올바른 사용법을 익힙니다.1. REST 아키텍처의 이해REST는 웹의 창시자 중 한 명인 로이 필딩이 제안한, 분산 하이퍼미디어 시스템(웹과 같은)을 위한 아키텍처 스타일입니다. 쉽게 말해, "웹의 장점을 최대한 활용할 수 있는 아키텍처의 모범 답안" 이라고 할 수 있습니다.1.1 REST의 핵심 원칙자원 (Resource): 모든 것을 자원으로 정의합니다. 예를 들어, 회.. 2025. 9. 19.
[Spring] 3주차: Spring MVC와 요청 처리 3주차: Spring MVC와 요청 처리목표: 스프링 MVC의 동작 원리를 이해하고, 클라이언트(웹 브라우저, 모바일 앱 등)로부터 들어오는 다양한 HTTP 요청을 처리하는 방법을 익힙니다. @RestController와 다양한 요청 매핑 어노테이션을 활용하여 웹 애플리케이션의 엔드포인트를 자유자재로 다룰 수 있게 됩니다.1. 스프링 웹 MVC 아키텍처스프링 부트에서 웹 애플리케이션을 개발할 때, 우리는 내부적으로 스프링 MVC 프레임워크를 사용하게 됩니다. 스프링 MVC의 모든 요청은 하나의 "중앙 관제탑"을 통해 처리되는데, 이것이 바로 DispatcherServlet 입니다.1.1 DispatcherServlet의 요청 처리 흐름클라이언트로부터 요청이 오면 DispatcherServlet은 다음과 .. 2025. 9. 19.
[Spring] 2주차: 스프링 부트와 AOP 입문 2주차: 스프링 부트와 AOP 입문목표: 스프링 부트(Spring Boot)가 어떻게 복잡한 스프링 설정을 자동화하고 개발 생산성을 높여주는지 이해합니다. 또한, 애플리케이션의 공통 관심사를 효과적으로 분리할 수 있는 AOP(관점 지향 프로그래밍)의 기본 개념을 학습하고 실제 코드에 적용해 봅니다.1. 스프링 개발의 혁신: 스프링 부트 (Spring Boot)1.1 스프링 부트 이전의 문제점 (XML 지옥)1주차에서 우리는 스프링의 핵심인 IoC/DI를 배웠습니다. 하지만 전통적인 스프링 프레임워크는 다음과 같은 불편함이 있었습니다.복잡한 설정: DispatcherServlet, ViewResolver, DataSource 등 웹 애플리케이션을 하나 실행하기 위해 수많은 빈(Bean)을 XML 파일이나 .. 2025. 9. 19.
[Spring] 1주차: 스프링의 핵심 - IoC/DI와 스프링 컨테이너 1주차: 스프링의 핵심 - IoC/DI와 스프링 컨테이너목표: 스프링 프레임워크의 가장 근본적인 설계 사상인 IoC(제어의 역전)와 DI(의존성 주입)를 완벽하게 이해합니다. 개발자가 직접 객체를 생성하고 연결하던 방식에서 벗어나, 왜 스프링에게 그 제어권을 넘겨야 하는지 체감하고, 스프링 컨테이너와 빈(Bean)의 개념을 익힙니다.1. 프로그래밍의 패러다임 전환: 제어의 역전 (IoC)1.1 기존 방식의 문제점스프링이 없던 시절, 우리는 보통 다음과 같이 코드를 작성했습니다.// OrderService.java (주문 서비스)public class OrderService { // 주문을 처리하려면 어떤 데이터베이스에 저장할지 알아야 합니다. // OrderService가 직접 `MySqlOr.. 2025. 9. 19.
[NestJS] 10장: 테스팅 - 견고한 애플리케이션 만들기 10장: 테스팅 - 견고한 애플리케이션 만들기테스트는 코드의 품질을 보장하고, 리팩토링이나 기능 추가 시 발생할 수 있는 예기치 않은 버그(회귀, Regression)를 방지하는 안전망 역할을 합니다. NestJS는 Jest 테스팅 프레임워크와 Supertest 라이브러리를 기반으로 한 강력한 테스팅 환경을 기본으로 제공합니다.1. 핵심 개념테스팅의 종류:단위 테스트 (Unit Tests): 가장 작은 코드 단위(함수, 메소드, 클래스)를 개별적으로 테스트합니다. 의존성은 모의(mock) 객체로 대체하여 해당 단위의 로직에만 집중합니다.통합 테스트 (Integration Tests): 여러 개의 단위(클래스, 모듈)가 함께 상호작용하는 방식을 테스트합니다. 실제 데이터베이스나 외부 서비스와의 연동을 테스.. 2025. 9. 19.
[NestJS] 9장: 설정 및 로깅 - 애플리케이션 환경 관리하기 9장: 설정 및 로깅 - 애플리케이션 환경 관리하기프로덕션 수준의 애플리케이션은 다양한 환경(개발, 스테이징, 프로덕션)에서 동작해야 하며, 각 환경에 맞는 설정 값을 가져야 합니다. 또한, 애플리케이션의 동작 상태를 추적하고 디버깅하기 위한 로깅(Logging) 시스템도 필수적입니다. NestJS에서 이를 효과적으로 관리하는 방법을 배웁니다.1. 설정 관리 (@nestjs/config)@nestjs/config는 NestJS 공식 설정 관리 모듈로, .env 파일이나 환경 변수를 애플리케이션에서 쉽게 사용할 수 있도록 도와줍니다.라이브러리 설치:npm install @nestjs/config.env 파일 생성: 프로젝트 루트에 .env 파일을 만들고 환경별 설정 값을 정의합니다. .gitignore에 .. 2025. 9. 19.
[NestJS] 8장: 인증 - 사용자를 확인하고 보호하기 8장: 인증 - 사용자를 확인하고 보호하기보안은 모든 애플리케이션의 핵심입니다. 이번 장에서는 사용자가 누구인지 확인하는 인증(Authentication) 시스템을 구축하는 방법을 배웁니다. NestJS는 Passport.js 라이브러리와의 통합을 통해 유연하고 확장 가능한 인증 전략을 쉽게 구현할 수 있도록 지원합니다. 여기서는 가장 널리 사용되는 JWT(JSON Web Token) 기반 인증을 다룹니다.1. 핵심 개념인증(Authentication): "당신은 누구인가?"를 확인하는 과정입니다. (예: 아이디/비밀번호로 로그인)인가(Authorization): "당신이 이 작업을 수행할 권한이 있는가?"를 확인하는 과정입니다. (예: 관리자만 접근 가능한 페이지)Passport.js: Node.js를.. 2025. 9. 19.
[NestJS] 7장: 실전 프로젝트 - Todo 리스트 API 서버 만들기 7장: 실전 프로젝트 - Todo 리스트 API 서버 만들기지금까지 배운 NestJS의 핵심 개념(모듈, 컨트롤러, 프로바이더, DI, TypeORM, 파이프 등)을 모두 활용하여 할 일(Todo) 목록을 관리하는 완전한 CRUD API 서버를 구축합니다.1. 프로젝트 목표 및 구조기능 요구사항:Todo 목록 조회 (완료/미완료 필터링 기능 포함)특정 Todo 조회새 Todo 생성 (내용 유효성 검사 포함)Todo 내용 및 완료 상태 수정특정 Todo 삭제기술 스택:프레임워크: NestJS데이터베이스: TypeORM + SQLite (간단한 파일 기반 DB로 설정이 쉬움)유효성 검사: class-validator, class-transformer프로젝트 구조: todo-api/ ├── src/ │ .. 2025. 9. 19.
반응형