API 설계 시 주의점 API 파라미터 받을때나 보낼때는 절대로 엔티티를 사용하면 안된다. 항상 DTO를 만들어서 필요한 정보만 내보내도록 해야한다! 필수! import java.util.List; import java.util.stream.Collectors; @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; /** * 멤버 조회 * 문제점 : 엔티티 모든것이 노출 등 * @return */ @GetMapping("/api/v1/members") public List membersV1() { return memberService.findMem..
먼저 DTO를 생성한다. BookForm package com.kyhslam.controller; import lombok.Getter; import lombok.Setter; @Setter @Getter public class BookForm { private Long id; private String name; private int price; private int stockQuantity; private String author; private String isbn; } ItemController package com.kyhslam.controller; import com.kyhslam.domain.item.Book; import com.kyhslam.domain.item.Item; import c..
| Spring REST Docs Spring REST Docs는 REST API 에 대한 정보를 제공하는 Docs를 생성할 수 있는 Spring에서 제공하는 툴 이다. Spring MVC Test 코드 작성 시 추가적으로 Docs를 생성하는 코드를 첨가하여 생성할 수 있다. REST Docs 는 REST 아키텍처의 self-descriptive 규약을 지키기 위해 REST API의 리소스 및 API 명세 그리고 요청과 응답 데이터의 설명까지 포함된 문서를 만들 수 있게 해준다. 참고 URL : https://docs.spring.io/spring-restdocs/docs/2.0.4.RELEASE/reference/html5/ Spring REST Docs Document RESTful services ..
| Spring HATEOAS HATEOAS 는 Hypermedia As The Engine Of Application State 의 약자로 REST 아키텍처의 한 구성요소이다. 이 HATEOAS를 통해서 어플리케이션의 상태를 전이할 수 있는 매커니즘을 제공할 수 있다. 참고 URL : https://docs.spring.io/spring-hateoas/docs/current/reference/html/ Spring HATEOAS - Reference Documentation Example 47. Configuring WebTestClient when using Spring Boot @SpringBootTest @AutoConfigureWebTestClient (1) class WebClientBased..
| 도메인 Validator를 통한 처리 검증할 EventValidator 클래스를 생성한다 package org.kyhslam.rest; import org.springframework.stereotype.Component; import org.springframework.validation.Errors; import java.time.LocalDateTime; @Component public class EventValidator { public void validate(EventDto eventDto, Errors errors){ //금액 검증 if(eventDto.getBasePrice() > eventDto.getMaxPrice() && eventDto.getMaxPrice() != 0){ err..
Spring REST API Bad Request 처리 HTTP 요청에 대해 잘못된 입력값이 보내진 경우, 어떻게 처리를 해야 되는지 두 가지의 테스트 케이스로 확인해보자. 첫번째 : 입력값이 없는 상태 두번째 : 비즈니스로직에 위배되는 값이 왔을 경우 json문자열을 object로 변환하는 과정을 deserialization 이라고한다. 객체(object)를 json문자열로 변환하는 과정을 Serialization이라고 한다.
Spring REST API 테스트 클래스 생성 및 201 응답 의존성 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-hateoas org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.modelmapper modelmapper 2.3.1 org.springframework.boot spring-boot-starter-test test com.h2database h2 org.springframework.restdocs spring-restdocs-mockmvc test 소스 코드 p..
API Application Programming Interface Rest REpresentational State Transfer 인터넷상의 시스템간의 상호 운용성(interoperability)을 제공하는 방법 중 하나 시스템 제각각의 독립적인 진화를 보장하기위한 방법 Rest API : REST 아키텍처 스타일을 따르는 API Self-descriptive message 메세지 스스로 메시지에 대한 설명이 가능해야 한다. 서버가 변해서 메시지가 변해도 클라이언트는 그 메시지를보고 해석이 가능하다. 확장 가능한 커뮤니케이션 HATEOAS 하이퍼미디어(링크)를 통해 애플리케이션 상태 변화가 가능해야 한다. 링크 정보를 동적으로 바꿀 수 있다.(Versioning 필요없이) HAL - Hypertext..