REST API 8

[네트워크 Network] 📑 API? REST? REST API? RESTful API?!

API란 무엇인가?API(Application Programming Interface)란, 애플리케이션 간의 소통을 가능하게 하는 중개자 역할을 한다. API의 맥락에서 애플리케이션이란 고유한 기능을 가진 모든 소프트웨어를 나타내며, 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다. 인터페이스는 요청과 응답을 사용해 두 애플리케이션이 서로 소통하는 방법을 정의하고 있다. 즉, API는 서로 다른 프로그램이 “대화”할 수 있게 해주는 통역사와 같다.웹 API웹 API 또는 웹 서비스 API는 웹 서버와 웹 브라우저 간의 애플리케이션 처리 인터페이스이다. 모든 웹 서비스는 API이지만 모든 API가 웹 서비스는 아니다. 역사적으로 API는 월드 와이드 웹(WWW)전에 만들어졌기 때문에 Jav..

Spring Boot WebClient를 활용한 MSA 통신 구현

프로젝트를 진행하면서 결제관련 외부 API를 호출한다던지, 서비스 간의 데이터 전송을 위해 API를 요청/호출한다던지 등 여러가지 이유로 인해 HTTP통신을 사용할 수 밖에 없습니다.특히, 진행 중인 프로젝트는 MSA(Micro Service Architecture)환경을 사용중인데, 이 경우 모듈간의 API 통신과 결제 API통신이 중요하기 때문에 webclient를 활용해 API통신하는 방법을 사용하고자 합니다.1. WebClient란?WebClient란 SpringBoot에서 동기 및 논블로킹 방식의 HTTP 요청을 처리하는 클라이언트입니다.RestTemplate의 대안으로 비동기식 요청을 통해 응답 속도를 최적화하고, 다양한 요청을 동시에 처리할 수 있습니다. 이번 프로젝트에서 WebClient를..

[쇼핑몰 팀 프로젝트] #4. 쿠폰 서비스 구현

서론공통 응답 객체도 만들었으니 이제 쿠폰 Entity를 만들어 보도록 하겠습니다.보통은 유저나 상품 먼저겠지만 제가 맡은 파트는 이쪽이기 때문에.. EntityBaseEntity.classcode@Getter@MappedSuperclasspublic class BaseEntity { @Column(name = "created_at", updatable = false) protected LocalDateTime createdAt; @Column(name = "updated_at") protected LocalDateTime updatedAt; @PrePersist public void prePersist() { createdAt = LocalDateTime.n..

[쇼핑몰 팀 프로젝트] #3. 프로젝트 생성 및 API 공통 응답 구현

서론드디어 프로젝트 생성 후 모듈이 만들어졌습니다.멀티 모듈에 대한 설명과 이전에 만든 API공통응답&예외처리를 약간의 수정 후 코드를 넣어보도록 하겠습니다. 프로젝트개발 스펙언어 : 자바 openJDK 17프레임워크 : 스프링부트 spring boot 3.1.0빌드툴 : Gradle데이터베이스 : H2 (프로덕션 환경에서는 mysql 사용) 모듈 설계멀티 모듈로module-commonmodule-coupon-servicemodule-item-servicemodule-order-servicemodule-user-service로 구성했는데 이전에 말했듯 review서비스가 독립적으로 관리될 것을 생각하면 추후 모듈을 추가해주는게 좋을 것 같습니다.API 공통 응답 및 예외 처리지난번 공통 응답 설계와 달라..

[쇼핑몰 팀 프로젝트] #2. API 공통 응답 처리와 예외 처리

서론본격적인 소스 코드 개발에 들어가기에 앞서 남는 시간에 이번에 맡게된 API 공통 응답 템플릿을 미리 만들어보기로 했습니다.또한, 전역 예외 처리를 하며 예외를 핸들링 해보도록 하겠습니다. API 공통 응답 처리RESTful API에서 공통 응답 처리는 API응답 형식을 통일해 서버와 클라이언트 간 소통을 원활하게 할 수 있습니다. API가 동일한 응답 구조를 가진다면 클라이언트는 응답 데이터를 파싱하고 처리하는 코드를 일관되게 작성할 수 있는 이점이 있습니다. 오류 처리 또한 여러 상황에서 통일된 방식으로 응답을 반환해 일관적으로 대응할 수 있게 됩니다. 공통 응답 예시먼저 프로젝트에서 사용할 공통 응답 템플릿을 정하는게 우선일 듯 합니다.이번 저희 프로젝트에서는 status, message, da..

MSA와 Multi-Module

Micro Service Architecture(MSA)를 알기 위해서는 Monolithic Architecture(모놀리식 아키텍처)을 알고가야합니다.Monolithic Architecture 모놀리식 아키텍처는 대부분의 토이 프로젝트를 하면서 우리가 사용하는 아키텍처로 소프트웨어의 모든 구성요소가 한 프로젝트로 통합된 구조를 말합니다. 장점 - 단순한 아키텍처 구조로 소규모 프로젝트에 용이하다. - 획일화된 구조로 개발, 빌드, 배포, 테스트에 용이하다. - 전체 개발 스택이 동일해 복잡하지 않다. 단점 - 프로젝트 규모가 커지면 앱 구동시간이 늘어나고 빌드, 배포 시간이 길어진다. - 수정사항이 생기면 전체를 다시 빌드, 배포해야한다. - 일부분의 오류가 전체 시스템에 영향을 미친다. - 많은 양의..

[쇼핑몰 팀 프로젝트] #1. 프로젝트 추가 사항

⭐️ 추가사항프로젝트에 추가될 기능과 기술에 대해서 토의하다가 여러가지 많이 나오게 됐는데 이 중 일정에 무리가 가지 않는 선에서 해보고자 나온 것들이주문 할인 쿠폰(정액제, 정률제)- 전체금액에서 할인상품 할인 정책(정액, 정률)- 활성, 비활성화(기간은 추후 고려)presignedUrl 기술로 이미지 첨부상품 리뷰상품 옵션(사이즈, 색상 등)카테고리(필터링) 세부 설정등 새로운 기능과 기술이 첨부 됐습니다. 🔍 주요기능 📜 요구사항 ERD 위에 모든것이 전부 수정될 수 있다는 점... ERD가 연관관계가 다 이어지지 않은 것은 마이크로서비스 아키텍처 방식(MSA)으로 애플리케이션을 운영할 예정임으로 서비스 단위를 나눠 놨습니다.review의 경우 지금은 user에서 관리하도록 해놨지만 item과도..

[쇼핑몰 팀 프로젝트] #0. 프로젝트 구상

팀 프로젝트의 일환으로 결제기능을 다뤄보고 싶어서 쇼핑몰을 만드는 프로젝트 구상을 해봤습니다.📝 개요웹 기반의 온라인 쇼핑몰 구축 프로젝트📌 목표사용자가 상품을 검색하고 구매할 수 있는 온라인 쇼핑몰 플랫폼 개발💻 기술스택언어 : JAVA프레임워크 : Spring Boot데이터베이스 : Mysql프론트엔드 : Thymeleaf(추후 변경 가능)🔍 주요기능👤 User회원가입 : 이메일, 비밀번호, 이름, 닉네임, 전화번호 입력해서 가입로그인 : 이메일, 비밀번호로 로그인로그아웃 : 로그인 된 사용자 로그아웃내 정보 수정 : 닉네임, 비밀번호, 전화번호 수정🎁 Item상품 등록 : 상품명, 카테고리(다중선택 가능), 대표(썸네일) 이미지, 재고, 설명(텍스트, 이미지), 상품 전시 상태 입력해서 ..