Skip to content

백엔드 번개장터 클론코딩 프로젝트 CRUD 이미지업로드 검색

Notifications You must be signed in to change notification settings

jangjh45/thunder-market

 
 

Repository files navigation

항해99 13기 클론 코딩 프로젝트 5조 Backend github

⚡ 프로젝트 주제

번개장터

  • 실제로 서비스하고 있는 번개장터를 클론코딩하는 프로젝트

📅 프로젝트 기간 : 2023.03.24 ~ 2023.03.30

Back End Team

김건율 장진혁 박문주
@ChoonB @jangjh45 @parkmj4312
BE BE BE

🛠 개발 환경 | 개발 도구

📲 프로젝트 기능

  1. 메인 화면 (중고 상품 조회)

    • 모든 사용자는 판매중인 전체 상품을 조회할 수 있습니다.

    • 판매 완료된 상품은 조회 대상에서 제외됩니다.

    • 회원가입과 로그인을 헤더에 설정하였습니다.

    • 상품 등록 후 지난 시간을 알 수 있습니다.

    • 번개페이 사용가능 여부를 알 수 있습니다.

  2. 회원가입 로그인

    • JWTWebToken + spring boot Security 를 적용하여 구현하였습니다.

    • 카카오 소셜로그인을 구현하였습니다.

    • 이메일 중복, 닉네임 중복 체크를 구현하였습니다.

  3. 판매하기 (상품등록)

    • 상품에 관련된 이미지 1장 업로드 가능합니다. 이미지는 AWS S3로 저장하여 관리됩니다.

    • 제목, 상품설명, 카테고리, 판매 상태, 교환 가능 여부, 수량 선택 가능합니다.

  4. 상품 상세 조회

    • 상품에 대한 정보를 조회 가능합니다.

    • 상품을 등록한 작성자만 상품 수정, 삭제가능합니다.

    • 로그인한 사용자만 찜 기능을 이용할 수 있습니다.

    • 바로구매를 누르면 판매완료가 됩니다.

    • 조회한 상품의 카테고리와 동일한 상품 6개를 연관상품으로 조회합니다.

📋 ERD

스크린샷 2023-03-30 오후 8 43 23

⚽ 트러블 슈팅

  1. 카카오 소셜 로그인
  • 백엔드에서 API를 만들고 프론트에서 카카오 로그인 버튼을 만들어 링크에 직접연결했으나 연결 실패

  • Redirect URI를 프론트 페이지에 직접 링크시켜 연결해서 회원가입까진 성공했으나 JWT 토큰 생성 실패

  • 좀 더 알아본 결과 Redirect URI는 프론트에서 구현해서 카카오로 부터 코드를 받고 다시 백엔드 API로 코드를 보내 로그인 처리를 하고 토큰을 보내는 것이 좋다고 판단하여 이 방식으로 구현 성공.

  1. 이미지 업로드 구현
  • 이미지 업로드 기능에대해 알아보니 DB에 저장하는 방식, 서버에 저장하는 방식, 외부 저장소를 사용하는 방식 등으로 나뉘어져 있음

  • 먼저 서버에 저장하는 방식으로 시도해보고 기능 작동에는 성공하였지만, 매번 서버에서 그림을 불러오는 방식이 부하가 있어 보여 외부저장소를 사용하는 방식으로 변경

  • AWS S3에 이미지를 업로드해 저장하고 이미지를 불러올 때는 S3 URI에 저장된 파일 명만 붙여 불러오는 방식을 사용.

  • 처음엔 이미지 업로드 API와 상품 작성 API를 따로 구현하였으나 이미지만 업로드하고 상품은 작성하지 않을 경우 남은 이미지 처리가 곤란해 API 병합

  • 그 과정에서 이미지는 MultipartFile이라 @RequestParam으로 들어오고 상품 정보는 JSON이라 @RequestBody로 들어오는데 같이 받지 못해 실패.

  • @PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE}) @RequestParam("image") MultipartFile image, @RequestPart("dto") ProductRequestDto 로 Request 받기 성공

  1. AWS 에러
  • 사용하던 AWS Access 키가 노출되어 IAM 사용자 권한이 제대로 작동하지 않아 S3 변경.

  • CI/CD 도중 Script 문제로 서버에 2개의 빌드 파일이 돌아가 EC2가 다운되어 서버 인스턴스 변경

About

백엔드 번개장터 클론코딩 프로젝트 CRUD 이미지업로드 검색

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 98.5%
  • Shell 1.5%