본문 바로가기

항해 99

(151)
REST API URI 규칙 REST API URI 설계 규칙 모든 필수적인 자원 정보들을 소통하는데 있어서 가독성 있고 규칙에 위반되지 않은 URI 작성을 위한 규칙 URIs REST API는 자원의 주소를 나타내기 위해 Uniform Resource Identifiers(URIs)를 사용함 Client들은 웹의 연결 패러다임을 따라야 하며 URI를 불확실한 식별자로 대우해야 함, REST API 디자이너들은 잠재적 Client 개발자들에게 REST API의 자원 정보를 전달할 수 있는 URI를 만들어야 함 #1. URI에 후행 슬래시(주소 마지막에 붙이는 /)는 포함되지 않아야 됨 혼란을 줄 수 있고 의미가 없는 후행 슬래시를 URI 경로의 마지막에 포함시키지 않는 것은 규칙 중 가장 중요한 것 중 하나임. REST API는 후..
Java - SOLID 객체 지향의 SOLID 원칙 SOLID는 SRP, OCP, LSP, ISP, DIP의 앞 글자들을 딴 용어 SRP (Single Responsibility Principle) - 단일 책임 원칙 OCP (Open-Closed Principle) - 개방 폐쇄 원칙 LSP (Liscov Substitution Principle) - 리스코프 치환 원칙 ISP (Interface Segregation Principle) - 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) - 의존 관계 역전 원칙 객체 지향 설계를 잘해서 프로그래밍할 때의 장점 유지보수가 쉬워짐 확장성이 좋아짐 재사용성이 상승 자연적인 모델링이 가능 클래스 단위로 모듈화해서 대형 프로젝트 개발이 용이해짐..
ExceptionHandler 예외 처리는 애플리케이션을 만드는데 매우 중요한 부분을 차지함, Spring 프레임워크는 다양한 에러 처리 방법을 제공함 Spring의 기본적인 예외 처리 @RestController @RequiredArgsConstructor public class ProductController { private final ProductService productService; @GetMapping("/product/{id}") public Response getProduct(@PathVariable String id){ return productService.getProduct(id); } } 위 컨트롤러의 getProduct에서 NoSuchElementFoundException 예외가 발생했다면 접속한 환경에 따..
WIL-5 Fact : 이번주 있었던 일, 내가 한 일 월 : Spring 2차 테스트, 3레벨(백오피스) 과제 리뷰, 메서드 네이밍 컨벤션 학습 화 : 댓글 등록, 수정, 삭제 기능, 좋아요 기능 구현, Controller / RestController 학습 수 : 댓글 등록, 수정, 삭제 기능, 좋아요 리팩토링, Lombok 주의 사항 학습 목 : 프로그램 구동 테스트, Entity / DTO 분리 학습 금 : 상품 등록, 선택 상품 조회, 카테고리별 조회(페이징) 기능 구현, QueryDSL 학습 토 : 페이징 QueryDSL로 리팩토링 후 QueryMethod 성능 비교 테스트, AWS 배포 학습 Feeling : 나의 감정적인 반응, 느낌 팀 프로젝트 진행 중 팀원이 하루씩 참여를 못하는 문제가 발생하면서..
AWS - EC2, RDS 활용 배포 RDS 구매 및 MySQL 세팅 1. AWS 로그인 후 대시보드 접속 2. RDS 검색 후 결과 클릭 3. 데이터베이스 생성 클릭 4. 표준생성, MySQL 클릭 5. 프리 티어를 선택 6. 입력 DB 인스턴스 식별자에 DB 이름 입력(이름은 원하는대로) 마스터 사용자 이름과 암호에 만들고 싶은 계정의 아이디, 비밀번호 입력(DB 접속용으로 사용) 7. DB 인스턴스 크기와 스토리지 설정은 Defualt 값 사용 8. 연결 → 추가 연결 구성 탭 클릭 설정 퍼블릭 엑세스 기능 : 예 이 설정을 해야 컴퓨터에서 AWS RDS의 MySQL과 연결 가능 VPC 보안 그룹 : 새로 생성 보안 그룹 이름 지정 가용 영역 : 옵션 중 선택 9. 추가 구성 → 초기 데이터베이스 이름 입력 10. 데이터베이스 생성 클..
QueryDSL QueryDSL - 래퍼런스 문서 QueryDSL 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 오픈소스 프레임워크. QueryDSL이 제공하는 Fluent API를 이용해 코드 작성의 형식으로 쿼리를 생성할 수 있게 도와줌. 사용이유 Spring Data JPA가 기본적으로 제공해주는 CRUD 메서드 및 쿼리 메서드 기능을 사용하더라도, 원하는 조건의 데이터를 수집하기 위해서는 필연적으로 JPQL을 작성하게 됨. 간단한 로직을 작성하는데 큰 문제는 없으나, 복잡한 로직의 경우 개행이 포함된 쿼리 문자열이 상당히 길어지게 되고, JPQL 문자열에 오타 혹은 문법적인 오류가 존재하는 경우 정적 쿼리가 아닐 시 런타임 시점에서 에러가 발생함. 위 같은 문제를 해소하기 위해 QueryDS..
Entity와 DTO의 분리 Dto와 Entity를 분리해서 사용하는 이유 DTO와 Entity 구분 DTO(Data Transfer Object) : 클라이언트와 서버 간 데이터 전송을 위해 설계된 객체 Entity : 데이터베이스에 저장되는 데이터 객체로, 데이터베이스와 직접적으로 연결 Entity를 직접 반환할 경우 생기는 문제점 엔티티 구조 변경 시 발생하는 문제 요구사항이 변경되어 엔티티 필드 이름이 변경 될 경우, API 스펙이 변경되어 추가 작업이 요구된다. 효과적인 유지 보수가 어려워 시간과 비용이 증가함 필요한 데이터만 전송하기 어렵다 엔티티를 직접 반환하면 엔티티에 존재하는 모든 데이터가 반환 됨(트래픽이 증가할 수 있으며 성능 및 비용면에서도 현저한 차이를 가져올 수 있음) 사용자가 필요로하는 데이터만 전송하기 ..
lombok 주의 사항 Lombok 사용 시 주의 사항 Lombok은 자바 컴파일 시점에서 특정 어노테이션으로 해당 코드를 추가할 수 있는 라이브러리이다. 간편한 코드 작성, 가독성, 유지 보수에 많은 도움이 되지만 편리한 만큼 잘못 사용하기 쉬운 것이 Lombok이다. @Data 사용 지양 @Data는 @ToString, @EqualsAnHashCode, @Getter, @Setter, @RequiredArgsConstructor을 모두 포함하는 강력한 어노테이션임. @Data 사용으로 인해 발생할 수 있는 문제점 1. 무분별한 Setter 남용 Setter는 그 의도가 분명하지 않고 객체를 언제든지 변경할 수 있는 상태가 되어서 객체의 안정성이 보장받기 힘들다. 불필요한 변경 포인트를 제공하지 않음으로써 안정성을 취할 수 ..