본문 바로가기

728x90

Spring Boot

(41)
[Spring Boot] 유효성 검사와 예외 처리를 통한 API 구현 기존 문제점기존 포스트에서 작성한 서비스 로직에서는 두 가지 문제점이 있습니다:서비스 로직 내에서 오류 처리를 수행한다: 이로 인해 코드가 복잡해지고 가독성이 떨어집니다.오류 발생 시 상태 코드 200을 반환한다: 클라이언트는 오류가 발생했음에도 불구하고 정상 응답으로 인식할 수 있습니다.이 문제를 해결하기 위해 ResponseEntity를 사용하여 상태 코드를 적절하게 설정하고, ExceptionHandler를 사용하여 예외 처리를 분리하는 방법을 적용해 보겠습니다.Step 1: ResponseEntity를 활용한 상태 코드 설정먼저, ResponseEntity를 사용하여 상태 코드를 반환하도록 변경하겠습니다. 이렇게 하면 오류 발생 시 적절한 상태 코드를 반환할 수 있습니다.변경된 StudentVal..
[Spring Boot] Validation 유효성 검사 클라이언트 오류 보내기 1. API 형식 정의먼저 서버와 클라이언트 간에 주고받는 데이터 형식을 통일하기 위해 API 형식을 정의합니다. Api 클래스는 다음과 같이 구성됩니다:import com.fasterxml.jackson.databind.PropertyNamingStrategies;import com.fasterxml.jackson.databind.annotation.JsonNaming;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.util.List;@Data@AllArgsConstructor@NoArgsConstructor@Builder@JsonNaming..
[Spring Boot] Validation 유효성 검사 유효성 검증의 필요성클라이언트가 회원가입 요청을 보낼 때, 서버는 사용자의 이름, 나이, 이메일, 아이디, 비밀번호, 생일, 가입 날짜 등이 올바른 형식인지 확인해야 합니다. 예를 들어:이름을 입력하지 않았을 때는?나이가 -10살이나 200살일 때는?비밀번호가 "123"처럼 보안에 취약할 때는?이러한 검증을 if 문을 통해 하나하나 확인할 수 있지만, 검증할 항목이 많아질수록 코드의 길이는 길어질 수밖에 없습니다. 각 항목에 대해 개별적으로 검증하면 코드가 길어지고 중요한 서비스 로직이 누락될 수 있습니다.Spring Boot에서 유효성 검증이러한 문제를 쉽게 해결하기 위해 Spring Boot에서는 spring-boot-starter-validation 의존성을 사용할 수 있습니다. Validation..
[Spring Boot] Web에서 응답 만드는 방법 - Response Entity Spring Boot에서 응답을 만드는 방법Spring Boot에서 응답을 생성하는 방법에는 4가지가 있습니다.String일반 Text Type 응답Object자동으로 JSON 변환되어 응답 상태값은 항상 상태 코드 200(OK)ResponseEntityBody의 내용을 Object로 설정하고 상황에 따라서 HTTP 상태 코드를 설정@ResponseBodyRestController가 아닌 Controller에서 JSON 응답을 내릴 때 사용 ResponseEntity 반환ResponseEntity는 Object 타입으로 반환할 때보다 조금 더 상세하게 반환하고 싶을 때 사용하는 방식입니다.알아두어야 할 것@RestController는 기본적으로 JSON을 반환하는 라우터입니다. String 타입으로 반환..
[Spring Boot] Rest API Put 메서드 + boolean is 변수명의 문제점 Method의미CRUD멱등성안전성Path VariableQuery ParameterDataBodyGET리소스 취득R (Read)OOOOXPOST리소스 생성, 추가C (Create)XXO△OPUT리소스 갱신, 생성U / CUpdate, CreateOXO△O PUT 메서드PUT 메서드는 기본적으로 데이터를 갱신하며, 갱신할 데이터가 없을 시에는 새로운 데이터를 생성하는 역할을 합니다.특징:Path Variable: 가질 수 있습니다.Query Parameter: 사용할 수는 있지만 데이터를 필터링하는 역할로 사용하기에는 적합하지 않습니다.DataBody: 가질 수 있습니다.멱등성과 안전성PUT 메서드는 멱등성을 가집니다. 즉, 같은 요청을 여러 번 보내더라도 결과가 항상 동일하게 유지됩니다. 하지만 데이터가..
[Spring Boot] Rest API Post 메서드 Method의미CRUD멱등성안전성Path VariableQuery ParameterDataBodyGET리소스 취득R (Read)OOOOXPOST리소스 생성, 추가C (Create)XXO△O POST 메서드POST 메서드는 리소스를 생성하거나 추가하는 역할을 합니다. 이는 CRUD에서 Create를 담당합니다.특징Path Variable: 가질 수 있습니다.Query Parameter: 사용할 수 있지만, 주로 사용하지 않습니다.DataBody: 가질 수 있습니다.Query Parameter 사용의 문제점Query Parameter는 웹 애플리케이션에서 특정 데이터나 리소스를 필터링하거나 검색하는 데 사용됩니다. 하지만 다음과 같은 문제점이 있습니다:주소 노출: Query Parameter는 URL에 포함..
[Spring Boot] Rest API GET 메소드(2) GET 메소드 간단한 응답 코드 구현클래스 경로 라우터 지정하기@RequestMapping("/경로")는 클래스에 사용되어 해당 경로로 오는 요청을 해당 클래스에서 처리할 수 있게 합니다.이를 사용하면 코드의 가독성과 유지보가 쉬워집니다.예시 코드: import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api") // 클래스에 @RequestMapping("/경로")를 지정한다p..
[Spring Boot] Rest API GET 메소드(1) REST API에서 GET이란 URI 주소를 통해 접속을 했을 때 서버에 데이터를 요청하는 메소드입니다 Method의미CRUD멱등성안전성Path VariableQuery ParameterDataBodyGET리소스 취득R (Read)OOOOX 멱등성멱등성은 요청의 효과라는 의미로, 같은 행위를 여러 번 반복하더라도 같은 효과를 가져야 함을 의미합니다.예를 들어, A라는 행동을 여러 번 시도했을 때 결과가 항상 A인 것을 의미합니다. 안전성안전성은 서버 측의 상태 정보를 변경하지 않는 메소드를 가리킵니다.예를 들어, 구글에 접속을 100번 하더라도 서버 데이터는 변경되지 않습니다. Path VariableURI 주소에 변수를 포함하여 가변적인 주소를 설정할 수 있습니다. 이를 통해 특정 리소스를 지칭할 수 ..

728x90