[Packy] Spring Boot로 유튜브 영상의 유효성 검사하기
·
Spring
1. 들어가며 이번에 만들고 있는 서비스에서 유튜브 영상을 임베드할 수 있는 기능을 제공한다. iOS에서 지금 사용하는 라이브러리에서는 유효하지 않은 빈 동영상 링크를 삽입해도 빈 동영상으로 나옴 유튜브 API 할당량을 아끼기 위해 URL 캐싱 위 두 가지 이유 때문에 유튜브 영상의 유효성 검사를 서버 단에서 진행하기로 결정하였다. 이번 포스트에서는 Youtube API를 연동하여 유튜브 영상의 정보를 가져오고 유효성을 검사하는 로직을 만들어보자. 2. 유효성 검증 로직에 대해 알아보자 1. 유튜브 URL에 정규 표현식을 사용하여 Video ID 추출 2. Video ID를 유튜브 API에게 전달하여 Video 정보를 가져옴 3. Embeddable, PrivacyStatus 여부를 확인하여 유효한 영상..
[Packy] Spring Boot에서 Presigned URL로 AWS S3에 파일 업로드하기
·
Spring
이번 포스트에서는 AWS S3 파일 업로드 방식 중 MultipartFile을 사용한 방식과 Presigned URL을 사용한 방식에 대해 알아보고, Presigned URL로 S3에 파일을 업로드하는 방식을 코드로 직접 구현해본다. 1. MultipartFile을 사용한 기존 S3 파일 업로드 Spring Boot에서 S3 파일 업로드를 구현할 때 가장 많이 사용하는 방법이 MultipartFile을 사용하는 방법이다. MultipartFile은 스피링에서 제공하는 인터페이스로, 파일 업로드를 손쉽게 다룰 수 있도록 기능을 제공한다. 클라이언트에서 파일을 업로드했을 때 WAS가 임시 디렉토리에 파일을 저장한다. 파일은 컨테이너가 실행되고 있는 서버 디스크에 저장되고, 요청 처리가 끝나면 임시 저장된 파..
[Packy] 멀티 모듈 프로젝트에서 서로 다른 모듈의 의존성 주입하기
·
Spring
1. 들어가며 이전 포스트에서 멀티 모듈 프로젝트를 생성해보았다. [Packy] 멀티 모듈 프로젝트 생성하기 저번 포스트에서 멀티 모듈의 개념, 사용하는 이유, 어떻게 구성하는지에 대해 알아보았다. 멀티 모듈이 무엇이고, 왜 사용할까? 1. 멀티 모듈이란? Java에서 모듈이란 패키지의 한 단계 위의 집합 leeeeeyeon-dev.tistory.com 본격적으로 개발을 시작하며 Controller나 Service 코드는 api 모듈에서 관리하고, Entity나 Repository 코드는 domain 모듈에서 관리하고 있다. 그러다보면 api 모듈에서 domain 모듈의 코드가 필연적으로 필요하고, 모듈 간 의존성을 주입해주어야 하는 일이 생긴다. 이번 포스트에서는 멀티 모듈 프로젝트에서 한 모듈에 다른..
[Packy] API 공통 응답 포맷 만들기 - 정상 응답인 경우& 예외 처리 응답인 경우
·
Spring
1. 들어가며 클라이언트 단에서는 백엔드에서 개발한 API Response를 토대로 데이터 모델이라는 것을 만들어 화면에 데이터를 출력한다. 만약 통일된 규격의 API Response가 없으면 클라이언트 개발자들은 API마다 데이터 모델을 일일이 만들어야 한다. 그러므로 백엔드에서는 어느 정도 통일된 양식의 API를 전달해주는 것이 좋다. 이번 포스트에서는 정상(200)인 경우와 예외 처리의 경우에 대해 공통 Response 포맷을 만드는 과정을 알아보자. 2. 공통 응답 포맷 정상 응답 정상 응답일 경우에는 아래와 같은 형태의 응답 포맷을 만드는 것이 목표이다. code와 message는 각각 에러가 발생할 경우 에러를 구분하는 에러 코드와 에러에 대한 설명이며 정상 응답일 경우 S000과 OK로 일정..
[Packy] Docker로 MySQL 띄우고 Spring Boot에 연동하기
·
Spring
0. 들어가며 이전까지는 로컬 DB 환경으로 H2 데이터베이스를 사용하였다. 그러다 소프트웨어 마에스트로 과정을 하며 멘토님께서 'H2는 MySQL과 다른 데이터베이스이기 때문에 문법 차이 등으로 발생하는 문제를 로컬 환경에서 확인할 수 없다. 데이터베이스 환경을 운영 환경과 최대한 똑같이 해라'라는 조언을 들었었다. 그래서 로컬 DB 환경으로 MySQL을 사용하고, 이를 도커로 띄우기로 결정하였다. 도커로 MySQL을 띄우면 나의 로컬 환경으로부터 독립적으로 운영할 수 있기 때문에 설정이 꼬이는 문제를 방지할 수 있다. 더 나아가 docker-compose 등으로 설정 환경을 작성해두어 모든 운영체제에서 동일한 스펙의 DB를 다시 만들 수 있다는 장점이 있다. 1. Docker로 MySQL 띄우기 do..
[Packy] 멀티 모듈 프로젝트 생성하기
·
Spring
저번 포스트에서 멀티 모듈의 개념, 사용하는 이유, 어떻게 구성하는지에 대해 알아보았다. 멀티 모듈이 무엇이고, 왜 사용할까? 1. 멀티 모듈이란? Java에서 모듈이란 패키지의 한 단계 위의 집합체이며, 서로 밀접하게 연관된 패키지들과 리소스들의 그룹을 의미한다. 각 모듈은 독립적으로 개발, 빌드, 테스트, 배포가 가능 leeeeeyeon-dev.tistory.com 이번 포스트에서는 멀티 모듈 프로젝트를 생성하는 과정에 대해 알아보자. 0. 모듈을 어떻게 구성할까? 멀티 모듈을 도입하기 전, 패키 프로젝트의 모듈을 어떻게 구성할지 고민해보았다. 몇 가지 레포들을 살펴본 결과 아래와 같이 모듈을 나누는 것을 볼 수 있었다. (참고한 레포 중 일부를 가져왔다.) Street Drop : api, batc..
짱정연
'Spring' 카테고리의 글 목록 (2 Page)