책소개
이 책은 SPA(Single Page Application) 개발을 위해 타입스크립트와 Vue.js를 이용한 프론트엔드 개발과 스프링 부트를 이용한 REST API 시스템 개발을 다루고 있습니다.
프론트엔드 개발은 ECMAScript 6와 타입스크립트에 대한 기본적인 내용부터 Vue.js 기술적인 부분까지 설명합니다.
그리고 Vue.js 실전 애플리케이션을 구축해 봄으로써 Vue.js의 다양한 활용방안을 배우게 될 것입니다.
REST API 시스템 개발은 이미지를 판매하는 간단한 디지털 컨텐츠 샵의 REST API를 구축해 봄으로써 Restful 서비스를 위한 스프링 부트의 실제 사용법을 배울 수 있습니다.
실전 프로젝트 개발에 필요한 Restful 서비스와 스프링 부트의 기본 개념, JPA, 스프링 시큐리티, JWT, 토큰 인증, 롬복 등을 함께 설명합니다.
이 책은 EPUB 형식의 전자책이라서 종이책의 모습을 기대한 독자라면 페이지 모습이 웹 페이지 형태라 낯설 수 있습니다.
일반적인 개념 설명 위주의 구성이 아닌 SPA의 프론트엔드와 백엔드 REST API 서버의 실제 개발에 중점을 두고 프로그램 코드 위주로 책이 구성이 되어 있습니다.
소스코드를 다운로드 받은 다음에 직접 코드를 실행해 보면 SPA 개발에 대한 개념을 좀 더 구체적으로 이해할 수 있을 것입니다.
이 책은 온노트에서 출간된 "Vue.js with 타입스크립트"와 "실전 스프링 부트 REST API 개발 JPA + MySQL 개정판"의 내용을 합친 형태임을 알려드립니다.
목차
서문
1장 : Vue.js 개발 환경
___1. Visual Studio Code 설치
___2. Vetur 플러그인 설치
___3. NodeJS 설치
___4. 뷰 개발자 도구(Vue Devtools) 설치
___5. 자바 설치
2장 : ECMAScript 6
___1. var 선언자 특성
___2. let 선언자
___3. const 선언자
___4. Symbol 타입
___5. 화살표함수
___6. for of 문
___7. 비구조화 할당
___8. Map 컬렉션 타입
___9. Set 컬렉션 타입
___10. 함수 매개변수
___11. 템플릿 리터럴
___12. 클래스 구문
___13. 클래스 상속
___14. 전개 연산자
___15. 객체 속성 생략 지정
___16. 프로미스
3장 : 타입스크립트
___1. 타입
___2. 타입 지정
___3. 클래스
___4. 추상클래스
___5. 인터페이스
___6. 모듈
4장 : Vue.js 기본
___1. Vue 인스턴스
___2. 인스턴스 옵션
___3. 인스턴스 라이프 사이클
___4. data 속성
___5. Vue 템플릿 문법
___6. computed 속성
___7. methods 속성
___8. watch 속성
___9. 필터
___10. 디렉티브
___11. 이벤트 처리
___12. 폼바인딩
___13. Vue 컴포넌트
___14. 컴포넌트 통신
___15. Vue CLI 설치
___16. 프로젝트 생성
5장 : Todo 애플리케이션
___1. 애플리케이션 소개
___2. 프로젝트 생성
___3. 컴포넌트 정의
___4. 화면 구성
___5. 데이터 정의
___6. 이벤트 처리
___7. 컴포넌트 통신
___8. Vuex 적용
___9. Vuex 스토어 접근
___10. Vuex 바인딩 헬퍼
___11. Vuex 개발 구성
___12. 데이터 저장
___13. Todo 항목 수정
___14. 편집 상태 체크
___15. Todo 항목 컴포넌트 정의
___16. Todo 항목 완료 처리
___17. 검색 필터링 컴포넌트 정의
___18. Todo 항목 아이디 생성
6장 : CRUD 게시판
___1. 게시판 소개
___2. 프로젝트 생성
___3. REST API 서버 구성
___4. 라우터 정의
___5. Vuex 상태 정의
___6. 게시글 등록
___7. 게시글 목록
___8. 게시글 상세보기
___9. 게시글 삭제
___10. 게시글 수정
7장 : 파일 게시판
___1. 파일업로드 소개
___2. 프로젝트 생성
___3. REST API 서버 구성
___4. 라우터 정의
___5. Vuex 상태 정의
___6. 파일 업로드
___7. 파일 게시글 목록
___8. 파일 게시글 상세보기
___9. 파일 게시글 삭제
___10. 파일 게시글 수정
8장 : 실전 프로젝트
___1. 프로젝트 소개
___2. 프로젝트 생성
___3. REST API 서버 구성
___4. 홈 화면
___5. 레이아웃 정의
___6. 로그인 화면
___7. 최초 관리자 생성
___8. JWT 소개
___9. 로그인 처리
___10. 로그인 여부 확인
___11. 로그인 상태 유지
___12. 로그아웃 처리
___13. 코드그룹 관리
___14. 코드 관리
___15. 회원가입
___16. 회원 관리
___17. 회원 게시판
___18. 공지사항
___19. 상품 관리
___20. 코인 충전
___21. 상품 구매
___22. 공개 자료실
9장 : 스프링 부트 개발환경
___1. 자바 설치
___2. Spring Tools 4 설치
___3. UTF-8 설정
10장 : 스프링 부트 프로젝트 생성
___1. 프로젝트 생성
___2. 프로젝트 파일 구성
___3. 프로젝트 실행
___4. 스프링 MVC
___5. 스프링 MVC 구조
___6. 스프링 스타터 프로젝트 의존성
11장 : 롬복
___1. 롬복 설치
___2. 자바빈즈
___3. 롬복 애너테이션
___4. @Getter와 @Setter
___5. @ToString
___6. @EqualsAndHashCode
___7. @NoArgsConstructor
___8. @RequiredArgsConstructor
___9. @AllArgsConstructor
___10. @Data
___11. @Builder
___12. @Slf4j
12장 : REST
___1. REST 소개
___2. REST API 설계
___3. @RestController
___4. REST API 클라이언트
___5. REST API 문서화
13장 : JSON
___1. JSON 소개
___2. JSON 자료 타입
___3. JSON과 자바 클래스
14장 : jQuery Ajax 통신
___1. $.get()
___2. $.getJSON()
___3. $.post()
___4. $.ajax()
15장 : 컨트롤러 요청 매핑
___1. 요청 경로 매핑
___2. 경로 패턴 매핑
___3. Http 메서드 매핑
___4. Headers 매핑
___5. Content Type 매핑
___6. Accept 매핑
16장 : 컨트롤러 응답
___1. void 타입
___2. String 타입
___3. 자바빈즈 클래스 타입
___4. 컬렉션 List 타입
___5. 컬렉션 Map 타입
___6. ResponseEntity<Void> 타입
___7. ResponseEntity<String> 타입
___8. ResponseEntity<자바빈즈 클래스> 타입
___9. ResponseEntity<List> 타입
___10. ResponseEntity<Map> 타입
___11. ResponseEntity<byte[]> 타입
___12. 컨트롤러 메서드 반환 값
17장 : 컨트롤러 요청 처리
___1. 컨트롤러 메서드 매개변수
___2. 요청 처리
___3. 요청 처리 자바빈즈
___4. Date 타입 처리
___5. @JsonFormat 애너테이션
___6. 파일업로드 요청 처리
18장 : 입력 유효성 검증
___1. 입력값 검증
___2. 입력값 검증 결과
___3. 입력값 검증 규칙
___4. 중첩된 자바빈즈 입력값 검증
19장 : 메시지 처리
___1. 메시지 소스 정의
___2. 국제화
20장 : 의존성 주입
___1. 의존성 주입 설명
___2. 필드 기반 의존성 주입
___3. 생성자 기반 의존성 주입
___4. 세터 기반 의존성 주입
___5. 자동 연결
21장 : 예외 처리
___1. 예외 처리
___2. 예외 상황
___3. try-catch문 예외 처리
___4. 예외 처리 애너테이션
___5. 사용자 정의 예외 처리
___6. 시스템 예외 처리
___7. 애너테이션 활용한 예외 처리
___8. 입력값 검증 결과 처리
___9. 입력값 검증 예외 처리
22장 : 인터셉터
___1. 인터셉터 설명
___2. 인터셉터 설정
___3. 인터셉터 활용
23장 : 데이터베이스 연동
___1. MySQL 설치
___2. MySQL Workbench
___3. 데이터 소스 설정
___4. CRUD 게시판 소개
___5. 스프링 JDBC
___6. JPA
___7. 마이바티스
24장 : JPA
___1. 소개
___2. JPA 설정
___3. JPA 애너테이션
___4. 스프링 데이터 JPA
___5. 쿼리메서드
___6. JPQL
___7. Querydsl
___8. 사용자 정의 인터페이스
25장 : JPA 활용
___1. CRUD 게시판
___2. 페이징 게시판
___3. 검색 게시판
___4. JPQL 활용
___5. Querydsl 활용
___6. 사용자 정의 인터페이스 활용
___7. 임베디드 타입
___8. 밸류 타입 컬렉션
26장. JPA 연관
___1. 엔티티 연관
___2. 일대다 단방향
___3. 다대일 단방향
___4. 다대일 양방향
___5. 일대일 단방향1
___6. 일대일 단방향2
___7. 일대일 양방향
___8. 다대다 단방향
___9. 다대다 양방향
___10. 다대다 연결 엔티티
27장 : REST API 서버 구현
___1. 스프링 부트 데이터 레스트
___2. @RepositoryRestController 사용
___3. 데이터 레스트 사용자 정의
___4. @RestController를 사용한 REST API 구현
___5. HATEOAS 적용
___6. 서버 애플리케이션 패키징
28장 : 파일 업로드
___1. 파일업로드 설명
___2. 이미지 업로드
___3. 여러 개의 이미지 업로드
___4. 비동기 방식 업로드
29장 : AOP
___1. AOP 설명
___2. 포인트컷 표현식
___3. Before 어드바이스
___4. After Returning 어드바이스
___5. After Throwing 어드바이스
___6. After 어드바이스
___7. Around 어드바이스
___8. 메서드 정보 획득
30장 : 트랜잭션
___1. 트랙잭션 설명
___2. 트랙잭션 설정
___3. 트랜잭션 적용
31장 : 스프링 시큐리티
___1. 스프링 시큐리티 소개
___2. 스프링 시큐리티 설정
___3. 접근 제한 설정
___4. 로그인 처리
___5. 접근 거부 처리
___6. 사용자 정의 접근 거부 처리자
___7. 사용자 정의 로그인 페이지
___8. 로그인 성공 처리
___9. 로그아웃 처리
___10. JDBC 이용한 인증/인가 처리
___11. 사용자 테이블 이용한 인증/인가 처리
___12. UserDetailsService 재정의
___13. 스프링 시큐리티 표현식
___14. 자동 로그인
___15. 스프링 시큐리티 애너테이션
32장 : JWT
___1. JWT 소개
___2. JWT 생성
___3. JWT 해석
___4. RESTful 서비스 보안 설정
___5. 시큐리티 필터
___6. 인증 필터
___7. 인증 토큰 생성
___8. 요청 필터
33장 : 실전 REST API 프로젝트
___1. 프로젝트 소개
___2. 프로젝트 생성
___3. 스프링 MVC
___4. 홈 화면
___5. 메시지 처리
___6. 데이터베이스 스키마 생성
___7. 데이터베이스 테이블 생성
___8. 데이터베이스 접근 설정
___9. 코드그룹 관리
___10. 코드 관리
___11. 회원 관리
___12. 최초 관리자 생성
___13. 액세스 토큰 생성
___14. 접근 제한 설정
___15. 회원 게시판
___16. 공지사항
___17. 상품 관리
___18. 코인 충전
___19. 상품 구매
___20. 공개 자료실
___21. 예외 처리
___22. 인터셉터를 활용한 접근 로깅 처리
___23. AOP를 활용한 서비스 성능 로깅 처리
___24. 서비스 운영 관리
___25. 애플리케이션 패키징
___26. 서버 실행
부록
___1. 업데이트
___2. 소스 다운로드
___3. MySQL 설치
___4. MySQL Workbench
___5. 데이터베이스 스키마 생성
___6. 타입스크립트 설치
___7. Vue.js 소스 실행하기
___8. Querydsl 개발 환경 설정
___9. 스프링 부트 프로젝트 불러오기
___10. JUnit 테스트 실행하기
___11. 세션 쿠키 삭제하기
부록 : 스프링 부트 시작하기
___1. 개요
___2. 스프링 부트 소개
___3. 시스템 요구 사항
___4. 스프링 부트 설치
___5. 첫 번째 스프링 부트 애플리케이션 개발
부록 : 스프링 부트 사용
___1. 개요
___2. 시스템 구축
___3. 코드 구조화
___4. 설정 클래스
___5. 자동 설정
___6. 스프링 빈과 의존성 주입
___7. @SpringBootApplication 애너테이션 사용
___8. 애플리케이션 실행
___9. 개발자 도구
___10. 프로덕션을 위한 애플리케이션 패키징
부록 : 스프링 부트 기능
___1. 개요
___2. SpringApplication
___3. 외부화된 설정
___4. 프로파일
___5. 로깅
___6. 웹 애플리케이션 개발
___7. 보안
___8. SQL 데이터베이스 작업
___9. 테스트
부록 : 스프링 부트 액추에이터
___1. 개요
___2. 프로덕션 준비 기능 활성화
___3. 엔드포인트
___4. HTTP를 통한 모니터링 및 관리
___5. 로거
___6. 메트릭
___7. 감사
___8. HTTP 추적
___9. 프로세스 모니터링
부록 : 스프링 웹 MVC
___1. DispatcherServlet
___2. 필터
___3. 애너테이션이 달린 컨트롤러
___4. Functional 엔드포인트
___5. URI 링크
___6. 비동기 요청
___7. CORS
___8. 웹 보안
___9. HTTP 캐싱
___10. 뷰(View) 기술
___11. MVC 설정
___12. HTTP/2