Spring Boot 35

[Spring boot] REST API 명세 문서화

API 개발 과정에서 계속 변경되므로 작성한 명세 문서도 주기적인 업데이트 필요Swagger라는 오픈소스 프로젝트를 넣어보자Swaggerpom.xml 파일 의존성 추가 org.springdoc springdoc-openapi-starter-webmvc-ui 2.6.0 config 폴더 만들어서 SwaggerConfiguration 넣기import io.swagger.v3.oas.models.Components;import io.swagger.v3.oas.models.OpenAPI;import io.swagger.v3.oas.models.info.Info;import org.springframework.context.annotation.Bean;import org.springframewor..

[Spring boot] POST API 만들기

@RequestMapping 구현POST API는 DB 등이 저장소에 리소스를 저장할 때 사용되는 APIGET API에서는 URL의 경로나 파라미터에 변수를 넣어 요청을 보냈지만 POST API에서는 저장하고자 하는 리소스나 값을 HTTP body에 담아 서버에 전달import com.springboot.api.dto.MemberDto;import java.util.Map;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import o..

[Spring boot] GET API 만들기

https://start.spring.io/여기서 Spring boot 간단하게 시작 @RequestMapping 구현import org.springframework.web.bind.annotation.RequestMapping;@RestController@RequestMapping("/api/v1/get-api")public class GetController { }RequestMapping 애너테이션을 별다른 설정 없이 선언하면 HTTP의 모든 요청을 받는다.그러나 GET 형식의 요청만 받기 위해서 애너테이션에 별도 설정이 필요import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.we..

[Spring boot] REST API

REST API대중적으로 가장 많이 사용된 애플리케이션 인터페이스이 인터페이슬르 통해 클라잉너트는 서버에 접근하고 자원을 조작할 수 있다.REST란?Representational State Transfer의 약자로 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템 아키텍처의 한 형식주고 받는 자원(Resource)에 이름을 규정하고 URI에 명시해 HTTP 메서드(GET, POST, PUT, DELETE)를 통해 해당 자원의 상태를 주고 받는 것을 의미REST API란?API는 Application Programming Interface의 약자로 애플리케이션에서 제공하는 인터페이스를 의미API를 통해 서버 또는 프로그램 사이를 연결할 수 있다.REST API는 REST 아키텍처를 따르는 시스템/애..

[Spring boot] 디자인 패턴

소프트웨어를 설계할 때 자주 발생하는 문제들을 해결하기 위해 고안된 해결책이다.디자인 패턴에서 ‘패턴’이라는 단어는 애플리케이션 개발에서 발생하는 문제는 유사한 경우가 많고 해결책도 동일하게 적용할 수 있다는 의미를 내표한다.but 디자인 패턴이 모든 문제의 정답은 아니며, 상황에 맞는 최적 패턴을 결정해서 사용디자인 패턴의 종류대표적 분류 방식인 ‘GoF 디장니 패턴’ == ‘Gang for Four’의 줄임말구체화하고 체계화해서 분류한 4명의 인물 의미Gof 디자인 패턴은 생성 패턴, 구조 패턴, 행위 패턴의 총 3가지로 구분됨생성 패턴 → 객체 생성에 사용되는 패턴, 객체를 수정해도 호출부가 영향 받지 않는다.구조 패턴 → 객체를 조합해서 더 큰 구조를 만드는 패턴행위 패턴 → 객체 간의 알고리즘이..

[Spring boot] 레이어드 아키텍처

레이어드 아키텍처애플리케이션의 컴포넌트르 유사 관심사를 기준으로 레이어로 묶어 수평적으로 구성한 구조를 의미한다.여러 방면에서 쓰이는 개념이며, 어떻게 설계하느냐에 따라 용어와 계층의 수가 달라진다3 계층 또는 4계층 구성을 의미한다.이 차이는 인프라(DB)레이어의 추가 여부로 결정된다. 프레젠테이션 계층애플리케이션의 최상단 계층이며 HTTP 요청/응답을 처리사용자 입력 받기, API 라우팅 역할별도의 비즈니스 로직을 포함하지 있지 않으므로 비즈니스 계층으로 요청을 위임하고 받은 결과를 응답하는 역할만 수행@RestController, @Controller@GetMapping("/users")public ResponseEntity getUsers() { return ResponseEntity.ok(..

[Spring boot] 스프링부트의 동작 방식

스프링 부트의 동작 방식일반적인 웹 요청이 들어왔을 때의 스프링 부트의 동작 구조(1) 클라이언트 → 서블릿 컨테이너 → DispatcherServlet(2) DispatcherServlet → HandlerMapping → 해당 컨트롤러 찾기(3) DispatcherServlet → HandlerAdapter → 컨트롤러 실행(4) 컨트롤러 → 결과 반환(5) DispatcherServlet → ViewResolver → 뷰 이름 → 뷰 파일 위치 찾기(6) 뷰 렌더링 → 사용자에게 HTML/JSON 응답 스프링 부트의 동작 구조를 예제 코드로 보자@Controllerpublic class HelloController { @GetMapping("/hello") public String hel..