서블릿(Servlet) API 기반 요청 처리 모듈(프레임워크)
서블릿
클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java언어로 작성하는 클래스 파일
서블릿 컨테이너
서블릿을 실행하고 관리하는 런타임 환경을 제공하는 소프트웨어 컴포넌트(독립모듈)
웹 서버 내에 내장되어, 서블릿의 생명주기 관리, 멀티스레딩 지원, 요청 및 응답 처리 등의 기능을 제공
작업의 처리 결과(데이터)
서비스 계층
비즈니스 로직 : 요청사항의 코드구현, 모델(결과 데이터)을 만드는 단계
Model 데이터를 이용한 리소스(Resource) 제공(실제 출력)
HTML 페이지의 출력
PDF, Excel 등의 문서 형태로 출력
XML, JSON 등 특정 형식의 포맷으로의 변환(프론트 측에서 받아 HTML생성)
JSON(JavaScript Object Notation)
클라이언트 애플리케이션과 서버 애플리케이션이 주고받는 데이터 형식
XML보다 간소화 됨Java객체를 Json으로 포맷 하게 된다
JSON의 기본 포맷 형태
{”속성”:”값”}
요청을 직접적으로 전달받는 엔드포인트, Model 데이터를 View로 전달하는 역할
Front Controller Pattern

패키지 구조
제공 기능을 리소스로 분류
스프링의 자동작성 부분
@SpringBootApplication
엔트리포인트(진입점)에 추가되며 아래 기능을 수행한다
기능 수행을 위해 패키지 주소를 맞출것
@EnableAutoConfiguration(스프링 부트 자동 구성기능 활성화)
@Configuration
@componetScanSpringApplication.run()
해당 클래스를 부트스트랩 하여 Spring Boot기반으로 앱을 실행시킨다

@RestController
클래스를 API 엔드포인트로 지정, 앱 로딩시 Spring Bean 자동동록
(value ="URI경로", Produces = {MediaType...})를 설정하거나
import로 ResponseEntity객체로 Map와 HttpStateus을 넣어 리턴하면 JSON형식으로 자동 변환된다.
@RequestMapping
컨트롤러 클래스를 만든다. 요청과 핸들러 메서드(요청처리 메서드)를 매핑
@RequestMapping을 Controller 클래스 레벨에 추가하여 클래스 전체에 사용되는 공통 URL(Base URL)을 설정할 수 있다
@PostMapping
@GetMapping
@PutMapping
@DeleteMapping
@PathVariable
파라미터 URI와 같은 이름으로 변수를 설정한다, 이는 값 식별 키로 사용된다
@RequestParam
@RequestParam("데이터명") [타입][담을 변수명] 형식으로 요청시 입력 값을 가져온다
복습
200대는 성공
400대는 클라이언트 문제
500대는 서버 문제


포스트맨 사용시 초반 핸들러메서드 어노테이션 값 설정과 엔드포인트 관계에 이해도가 낮아 고생을 좀 했다
Base URI(@RequestMapping에 등록된"/v1/members")만을 사용했을 때와

추가 경로 값을 설정하였을 때의 포스트맨 요청

기존 경로 사용시 404

추가 경로 입력시 출력 모습
무슨 이유 인지는 모르겠으나 반복 실행을 하다보니 나중엔 main메서드 실행중이 아님에도 localhost:8080가 이미 사용중이란 문구가 떴다. 프로세스를 관련 종료하려 했으나 찾기가 힘들어 깔끔하게 컴퓨터 부팅을 통해 해결하였다