728x90
반응형

Spring/API 11

Spring Boot OpenAPI 3.0 + Swagger version 3 적용 및 설정하기, Swagger에 JWT 기능 설정하기

이번 프로젝트를 진행하면서 API 문서 정리가 요구되었고 Swagger 3.0 버전을 적용하여 개발한 API를 정리하고 테스트할 수 있도록 설정하였다. 그에 대한 과정을 정리해보고자 한다. ▶ build.gradle Swagger dependency 적용해주기 implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' ▶ OpenAPI 3.0 + Swagger 3.0 Spring Boot에 설정하기 : @OpenAPIDefinition info : 해당 Swagger 페이지가 무엇을 나타내는지 알려주기 위해 작성해준다. @OpenAPIDefinition( info = @Info(title = "User-Service API 명세서",..

Spring/API 2023.06.21

[Spring] ResponseEntity란?

ResponseEntity가 무엇인지 알기 위해서 사전 지식으로 REST API가 무엇인지 알아야 한다. REST API에 대해 정리한 글이 존재하니 무엇인지 보고 오면 좋을 듯하다. https://wonsjung.tistory.com/418 API란? REST API란? API란 무엇인가? API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 wonsjung.tistory.com 1. ResponseEntity란? Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는..

Spring/API 2022.07.25

API 개발 - 컬렉션 조회(페치 조인의 페이징 한계 돌파)

주문 내역에서 추가로 주문한 상품 정보를 조회한다. 하나의 주문에 상품은 여러 개가 있을 수 있으므로 xToMany형태의 컬렉션 조회가 될 것이다. 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 작성 조건 : API 반환으로 원하는 조건은 { 주문 번호, 사용자 이름, 주문 날짜, 주문 상태, 배송지 정보, 주문한 상품 정보} 이다. 이 스펙에 맞춰 DTO를 개발해야한다. 위 조건에 대해 1. : 엔티티에 의존하는 API 개발 한계 해결 2. : DTO 개발 설계 시 발생하는 비효율성 한계 ..

Spring/API 2022.07.01

API 개발 - 컬렉션 조회 (페치 조인 최적화)

주문 내역에서 추가로 주문한 상품 정보를 조회한다. 하나의 주문에 상품은 여러 개가 있을 수 있으므로 xToMany형태의 컬렉션 조회가 될 것이다. 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 작성 조건 : API 반환으로 원하는 조건은 { 주문 번호, 사용자 이름, 주문 날짜, 주문 상태, 배송지 정보, 주문한 상품 정보} 이다. 이 스펙에 맞춰 DTO를 개발해야한다. 위 조건에 맞춰 전 게시글은 DTO로 컬렉션을 조회하는 API 개발이었다. DTO 개발을 통해 API가 요청하는 스펙에 따라 DTO로 변환하여 개발할 수 있었고, 엔티티에 의존하지 않는 API를 개발할 수 있었다...

Spring/API 2022.07.01

API 개발 : 컬렉션 조회

전에 했던 API 개발은 xToOne관계였다. 컬렉션이 아닌 단순한 형태의 조회였다. 이번에는 xToOne이 아닌 xToMany관계처럼 컬렉션 형태를 조회하는 것을 알아본다. 주문 내역에서 추가로 주문한 상품 정보를 조회한다. 하나의 주문에 상품은 여러 개가 있을 수 있으므로 xToMany형태의 컬렉션 조회가 될 것이다. 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 작성 조건 : API 반환으로 원하는 조건은 { 주문 번호, 사용자 이름, 주문 날짜, 주문 상태, 배송지 정보, 주문한 상품 정보} 이다. 이 스펙에 맞춰 DTO를 개발해야한다. @RestController @Requ..

Spring/API 2022.06.28

API 개발 : 간단한 주문조회 (지연로딩 최적화 - 패치 조인)

전 게시글과 동일한 조건에서 지연로딩으로 발생하는 1 + N 문제를 최적화하는 방법이다. 회원 조회가 아닌 주문 조회 REST API : GET Method 적용 주문과 xToOne관계로 맺어져 있는 정보를 조회할 것 즉, 컬렉션 조회가 아님 주문과 연관되어있는 회원, 배송정보를 조회할 것 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 작성 조건 : API 반환으로 원하는 조건은 { 주문 번호, 사용자 이름, 주문 날짜, 주문 상태, 배송지 정보} 이다. 이 스펙에 맞춰 DTO를 개발해야한다. @RestController @RequiredArgsConstructo..

Spring/API 2022.06.26

API 개발 : 간단한 주문 조회 (지연 로딩)

이번 게시글은 지난 게시글과는 달리 회원이 아닌 주문을 조회한다고 가정했을 경우이다. 조회이기 때문에 REST API : GET Method는 동일하다. 이번 간단한 주문 조회의 가정은 컬렉션 조회가 아닌 xToOne 관계 조회이다. 주문과 연관 되어 있는 관계 들 중 xToOne으로 관계가 맺어져 있는 회원, 배송정보를 가져올 것이다. 회원 조회가 아닌 주문 조회 REST API : GET Method 적용 주문과 xToOne관계로 맺어져 있는 정보를 조회할 것 즉, 컬렉션 조회가 아님 주문과 연관되어있는 회원, 배송정보를 조회할 것 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 ..

Spring/API 2022.06.26

회원 조회 API 개발 / Result 클래스로 유연한 JSON 반환

회원 조회는 값을 가져와 화면에 보여주기만 하면 된다. 즉, 생성 / 수정 없이 조회만 하면 된다 -> REST API : GET Method 사용 회원 조회 V1 : 응답 값으로 엔티티를 직접 외부에 노출 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @GetMapping("/api/v1/members") public List membersV1() { return memberService.findMembers(); } } V1 코드는 매우 간단하다. memberService를 통해 가지고 있는 모든 엔티티를 리스트 형태로 반환해주는 코드이..

Spring/API 2022.06.25

회원 수정 API 개발

전 게시글은 회원 등록 API 개발이었고, 이번 게시글은 회원 수정 API 개발이다. 회원 등록과 달리 수정이기 때문에 이번에는 REST API에서 PUT Method를 사용한다. * PUT Method와 POST Method의 차이! 수정하고자 하는 정보가 부분 정보인지 아니면 전체 정보인지에 따라 달리 사용하면 된다. PUT은 전체 업데이트를 할 때 사용하는 것이 적절하다. 부분 업데이트가 필요한 경우에는 PATCH를 사용하거나 POST를 사용하는 것이 REST API 스타일에 적절하다. 전 게시글을 통해 파라미터에는 엔티티가 아닌 API 스펙에 맞는 DTO 클래스를 생성하여 넘겨주어야 한다는 것을 알 수 있었다. 그러므로 이번 글에서는 엔티티 파라미터가 아닌 DTO 파라미터만 설명한다. @RestC..

Spring/API 2022.06.25

회원 등록 API 개발

Java / Spring 환경에서 회원을 등록하는 API를 이해해보자. 가장 먼저 회원을 등록하기 위해서는 REST API에서 리소스를 새로 생성해야한다. 즉, 리소스를 조회하거나 수정하는 Method가 아닌 생성하는 Method -> POST 방식을 사용한다. 첫 번째 방식으로 API 생성 메서드에 파라미터가 엔티티 일 때를 예로 들어보자. 1. 요청 값으로 Member 엔티티를 직접 받는 경우 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResp..

Spring/API 2022.06.25
728x90
반응형