스프링 6와 스프링 부트 3로 배우는 모던 API 개발

도서명:스프링 6와 스프링 부트 3로 배우는 모던 API 개발
저자/출판사:소라브 샤르마/위키북스
쪽수:512쪽
출판일:2024-12-05
ISBN:9791158395384
목차
[1부] RESTful 웹 서비스
▣ 01장: RESTful 웹 서비스 기본사항
기술 요구 사항
REST API 소개
__REST의 역사
__REST의 기본사항
리소스와 URI 다루기
__URI 구문
__URL이란
__URN이란
HTTP 메소드와 상태 코드 살펴보기
__POST
__GET
__PUT
__DELETE
__PATCH
__HTTP 상태 코드
HATEOAS이란
REST API 설계 베스트 프랙티스
__엔드포인트 경로에서 리소스의 이름을 지정할
__동사형이 아닌 명사형 단어를 사용
__엔드포인트 경로에서 컬렉션 리소스의 이름을 지정할 때 복수형을 사용
__하이퍼미디어 사용(HATEOAS)
__API 버전 관리
__중첩된 리소스
__API 보****
__문서 유지 관리
__권장되는 상태 코드 준수
__캐싱 보장
__단위시간당 요청량 제한(Rate limit) 유지 관리
전자 상거래 앱 소개
요약
질문
답변
추가 읽을거리
▣ 02장: 스프링의 개념과 REST API
기술 요구 사항
스프링 패턴과 패러다임 이해하기
__IoC란
__DI란
__AOP란
IoC 컨테이너 이해하기
Bean과 그 범위 정의하기
__@ComponentScan 애노테이션
__Bean의 범위
자바를 사용하여 bean 설정
__@Import 애노테이션
__@DependsOn 애노테이션
DI 코딩 방법
__생성자로 의존성 정의
__설정자 메소드로 의존성 정의
__클래스 프로퍼티를 사용한 의존성 정의
애노테이션을 사용하여 bean의 메타데이터 설정
__@Autowired 사용 방법
__타입별 일치(Match by type)
__한정자별 일치(Match by qualifier)
__이름으로 일치(Match by name)
__@Primary의 목적은 무엇일까?
__@Value는 언제 사용할까?
AOP용 코드 작성
스프링 부트를 사용하는 이유
서블릿 디스패처의 중요성 이해
요약
질문
답변
추가 읽을거리
▣ 03장: API 명세 및 구현
기술 요구 사항
OAS로 API 설계
OAS의 기본 구조 이해
__OAS의 메타데이터 절
__OAS의 servers와 tags 절
OAS의 컴포넌트(components) 절
OAS의 경로(path) 절
OAS를 스프링 코드로 변환
OAS 코드 인터페이스 구현
전역 예외 처리기 추가
API 구현 테스트
요약
질문
답변
추가 읽을거리
▣ 04장: API를 위한 비즈니스 로직 작성
기술 요구 사항
서비스 설계 개요
Repository 컴포넌트 추가
__@Repository 애노테이션
__데이터베이스 및 JPA 설정
__데이터베이스 및 시드 데이터 스크립트
__엔터티 추가
__리포지토리 추가
서비스 컴포넌트 추가
하이퍼미디어 구현
서비스와 HATEOAS로 컨트롤러 향상
API 응답에 ETag 추가
API 테스트
요약
질문
답변
추가 읽을거리
▣ 05장: 비동기 API 설계
기술 요구 사항
리액티브 스트림 이해하기
__발행자(Publisher)
__구독자(Subscriber)
__구독(Subscription)
__프로세서(Processor)
스프링 웹플럭스 살펴보기
__리액티브 API 이해
__리액티브 코어
DispatcherHandler 이해하기
__컨트롤러
__함수형 엔드포인트
전자 상거래 앱용 리액티브 API 구현
__리액티브 API용 OpenAPI Codegen 변경
__build.gradle에 리액티브 의존성 추가
__예외 처리
__컨트롤러에 대한 전역 예외 처리
__API 응답에 하이퍼미디어 링크 추가
__엔터티 정의
__리포지토리 추가
__서비스 추가
__컨트롤러 구현 추가
__애플리케이션에 H2 콘솔 추가
__애플리케이션 설정 추가
__리액티브 API 테스트
요약
질문
답변
추가 읽을거리
[02부] 보안, UI, 테스트, 배포
▣ 06장: 권한부여와 인증을 통해 REST 엔드포인트 보호하기
기술 요구 사항
스프링 시큐리티 및 JWT를 사용한 인증 구현
__Gradle에 필요한 의존성 추가하기
__OAuth 2.0 리소스 서버를 사용한 인증 방법
__JWT의 구조
JWT로 REST API에 보****적용하기
__새로운 API 추가하기
__데이터베이스 테이블에 리프레시 토큰 저장하기
__JWT 관리자 구현하기
새로운 API 구현
__findUserByUsername() 메소드 구현하기
__REST 컨트롤러 구현
__웹 기반 보****설정
CORS와 CSRF의 구성
권한부여(authorization)에 대한 이해
__역할과 권한
보****관련 테스트하기
요약
질문
답변
추가 읽을거리
▣ 07장: 사용자 인터페이스 설계하기
기술 요구 사항
React 기초
__리액트 앱 만들기
__기본 구조와 파일에 대해 알아보자
__package.json 파일에 대한 이해
__React 앱의 부트스트랩
리액트 컴포넌트 및 기타 기능에 대해 알아보자
__JSX에 대해 알아보자
__리액트 훅에 대해 이해해보자
__테일윈드(Tailwind)를 사용해 컴포넌트 스타일링하기
프로덕션 배포에 불필요한 스타일을 제거하도록 설정
__리액트에 테일윈드 포함시키기
전자상거래 앱 컴포넌트 디자인하기
Fetch를 이용해 API 호출하기
__제품 정보를 가져오는 API 클라이언트 작성하기
__제품 목록 페이지 코딩하기
인증 기능 구현하기
__커스텀 useToken 후크 만들기
__Login 컴포넌트 작성
__커스텀 cart context의 구현
__Cart 컴포넌트 작성하기
__Order 컴포넌트 작성하기
__루트(App) 컴포넌트 작성
__애플리케이션 실행하기
요약
질문
답변
추가 읽을거리
▣ 08장: API 테스트
기술 요구 사항
API와 코드를 수동으로 테스트하기
테스트 자동화
__단위 테스트
__AssertJ 어서션을 사용해 테스트하기
__코드 커버리지
__통합 테스트하기
요약
질문
답변
추가 읽을거리
▣ 09장: 웹서비스 배포하기
기술 요구 사항
컨테이너화란 무엇일까?
도커(Docker) 이미지 빌드하기
__도커란 무엇인가?
__이미지를 빌드하는 그래들 태스크 실행
쿠버네티스에 애플리케이션 배포하기
요약
질문
답변
추가 읽을거리
[03부] gRPC, 로깅, 모니터링
▣ 10장: gRPC 시작하기
기술 요구 사항
gRPC 동작방식
__REST 대 gRPC
__웹 브라우저와 모바일 앱에서 gRPC 서버를 호출할 수 있을까?
__gRPC 아키텍처란
__gRPC가 Protocol Buffer를 사용하는 방법
서비스 정의의 이해
RPC 수명 주기 살펴보기
__수명 주기에 영향을 주는 이벤트
__gRPC 서버 및 gRPC 스텁 이해
에러 처리와 에러 상태 코드
요약
질문
답변
추가 읽을거리
▣ 11장: gRPC API 개발 및 테스트
기술 요구 사항
API 작성
__프로젝트 설정
__결제 게이트웨이 기능 작성
gRPC 서버 개발
__gRPC 서버 구현
__gRPC 서버 클래스 구현
__gRPC 서버 테스트
에러 처리 구현
gRPC 클라이언트 개발
__gRPC 클라이언트 구현
__gRPC 서비스 테스트
마이크로서비스란?
__전통적인 모놀리식 디자인
__서비스 기반 모놀리식 디자인
__마이크로서비스 디자인
요약
질문
답변
추가 읽을거리
▣ 12장: 서비스에 로깅 및 트레이싱 추가
기술 요구 사항
ELK 스택을 활용한 로깅 및 트레이싱
ELK 스택의 이해
ELK 스택 설치
gRPC 코드에서 로깅 및 트레이싱 구현
__gRPC 서버 코드 변경
__gRPC 클라이언트 코드 변경
__로깅 및 트레이싱 변경사항 테스트
Zipkin과 Micrometer로 분산 트레이싱 하기
요약
질문
답변
추가 읽을거리
[04부] GraphQL
▣ 13장: GraphQL 시작하기
기술 요구 사항
GraphQL 알아보기
__GraphQL의 간략한 역사
__GraphQL과 REST 비교
GraphQL 기본 학습
__쿼리 타입 살펴보기
__뮤테이션 타입 살펴보기
__서브스크립션 타입 살펴보기
GraphQL 스키마 설계
__스칼라 타입의 이해
__프래그먼트 이해
__인터페이스 이해
__유니온 타입 이해
__인풋 타입 이해
__GraphQL 도구를 사용한 스키마 설계
GraphQL 쿼리와 뮤테이션 테스트
__N+1 문제 해결
__N+1 문제 이해란 무엇인가?
N+1 문제의 솔루션
요약
질문
답변
추가 읽을거리
▣ 14장: GraphQL API 개발 및 테스트
기술 요구 사항
GraphQL 용 워크플로우와 도구
GraphQL 서버 구현
__gRPC 서버 프로젝트 생성
__GraphQL DGS 의존성 추가
__GraphQL 스키마 추가
__커스텀 스칼라 타입 추가
__API 문서화
GraphQL 쿼리 구현
GraphQL 쿼리용 페처 작성
__Product용 데이터 페처 작성
__Product 컬렉션용 데이터 페처 작성
__데이터 페처 메소드를 사용한 필드 해석기 작성
__N+1 문제를 해결하기 위한 데이터 로더 작성
GraphQL 뮤테이션 구현
GraphQL 서브스크립션 구현 및 테스트
__GraphQL용 WebSocket 서브-프로토콜 이해
__Insomnia 웹소켓을 이용한 GraphQL 서브스크립션 테스트
GraphQL API 인스트루먼테이션
__커스텀 헤더 추가
__Micrometer와 통합
테스트 자동화
__GraphQL 쿼리 테스트
__GraphQL 뮤테이션 테스트
__자동화된 테스트 코드를 이용한 GraphQL 서브스크립션 테스트
요약
질문
답변
추가 읽을거리