Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/#253 학습자료 파일명 및 다운로드 기능 구현 #259

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from

Conversation

yessjun
Copy link
Collaborator

@yessjun yessjun commented Jan 12, 2025

#️⃣ 연관된 이슈

close: #253 #257

📝 작업 내용

  • 학습자료 파일명 저장 오류 수정
  • 학습자료 파일 URL 접근 시 다운로드 되도록 수정

💬 리뷰 요구사항(선택)

  • 기존에 파일명을 DB에 저장하고 있었지만 잘못된 메소드(getName)로 모든 파일이 "files"로 저장되고 프론트에 보내주고 있어 해당 값을 사용하지 않고 파일 UUID 값을 노출하고 있었습니다. 메소드를 파일 이름을 정상적으로 가져오도록 수정(getOriginalFilename)하였습니다.
  • 원본 파일명 적용 및 다운로드 설정을 위하여 S3 Presigned Url를 적용하였습니다. 이미지 파일은 브라우저에서 바로 불러와야 하기 때문에 기존처럼 Object URL을 사용하며, 이외 문서는 Presigned URL를 통해 원본 파일명 및 다운로드 옵션 지정한 링크를 제공합니다. 또한 기존에는 프론트에서 s3 baseUrl을 가지고 있었는데 백엔드에서 리다이렉트하여 접근하도록 수정하였습니다. (신규 API 추가: domain/files/{폴더명}/{UUID})

@yessjun yessjun self-assigned this Jan 12, 2025
@yessjun yessjun requested a review from JJimini January 12, 2025 07:43
@yessjun yessjun changed the title Feature/#253 학습자료 다운로드 설정 변경 Feature/#253 학습자료 파일명 및 다운로드 기능 구현 Jan 12, 2025
Copy link
Collaborator

@JJimini JJimini left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~!! 간단한 리뷰 남겼으니 확인 부탁드릴게요!
우선 전체적으로 final이 사용안된 것 같습니다!
final 사용 이유
final 사용 refactoring pr (그런데 test는 실제 성능과는 관련이 없어서 필수 체크처럼은 하고 있지 않습니당..)
이 규칙에 따라 사용하고 있으니 수정 부탁드립니다!
그리고 포맷팅이 안되어 있는 것 같습니다. 저희가 사용하는 포매터는 프로젝트(intelliJ-java-~~.xml)에 넣어두었으니 적용해서 코드에 적용해주세용!

Comment on lines +14 to +17
@Validated
@RestController
@RequiredArgsConstructor
@RequestMapping
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Validated annotation은 현재 코드 상 사용되고 있지 않은 것 같아 빼도 될 것 같습니다!(혹시 아니라면 알려주세용!)
그리고 RequestMapping을 사용하셨으니 @RequestMapping("/files") 를 사용해서 중복되는 url 코드를 줄일 수 있을 것 같습니다!

Comment on lines +22 to +23
@GetMapping("/files/images/{uuid}")
public ResponseEntity<Void> imageFile(@PathVariable String uuid) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앞에 final 빠진 것 같습니다~!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추가로 controller에도 수행하는 행위(동사) + 명사 이렇게 네이밍하면 어떤 기능을 수행하는 지 파악하기 쉬울 것 같아요!

ex) createTeam, updateTeam, deleteTeam, getTeam 등등

Comment on lines +26 to +28
return ResponseEntity.status(HttpStatus.MOVED_PERMANENTLY)
.header("Location", imageUrl)
.build();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런 HttpStatus도 있군요! 배워갑니다!!👍

Comment on lines +35 to +37
return ResponseEntity.status(HttpStatus.FOUND)
.header("Location", presignedUrl)
.build();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앞의 HttpStatus.MOVED_PERMANENTLY 와 다른 점이 무엇인가요??

Comment on lines +19 to +20
@DisplayName("[성공] 이미지 파일의 URL을 조회한다.")
public void 이미지_파일_URL_조회() throws Exception {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추가로 DisplayNameMethodName은 동일하면 좋을 것 같아요!
ex) 이미지_파일의_URL을_조회한다_성공()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEAT] 학습자료 업로드 시 파일 이름도 같이 보내준다.
2 participants