본문 바로가기

개발자 취업 프로젝트[일지]

💻개발자가 되기 위한 프로젝트(98)💻

06.23.2023 - 학습 일지
[국비] 백엔드 과정
※ 오전 활동 ※
T : AM 09:00 - 11:50
SpringBoot - File Handling
※ [학습 내용] ※

SpringBoot - File Handling
  1. 사용자 프로필 이미지를 설정하는 작업을 함
    - 정적 파일 : 미리 서버에 저장해 놓은 파일을 말하며, 파일 자체가 고정되어 있고, 서비스 중에도 추가되거나변경되지 않으며, 외부환경에 관계없이 일정한 결과값을 제공해주는 걸 말함 
    - 동적 파일 : 외부환경에 따라 다른 결과값을 제공해주는 것을 말하고, 클라이언트의 요청에 따라 다양한 화면을 제공해주는 것을 말함
  2. Multipart[form Tag에 대한 기능을 학습함]
    - form : HTML에서 JS없이 데이터를 보낼때 사용되며, 내부 input 요소를 이용하여 데이터를 전달할 것을 정의하고, type을 submit으로 하여 내부의 데이터를 수합함
    - multipart/form-data : 요청을 여러 부분으로 구분해서 전송하는 형태임
    - Spring MultipartFile : @RequestParam으로 MultipartFile 인자를 받아 image 파일을 받아오는 작업을 함

    - transferTo method : 이미지 파일을 저장해주는 폴더의 경로를 설정하여 POST 요청시 성공적이면 설정한 경로로 저장이 되도록 함 
    - getBytes method : byte[] 데이터로 사전 확인하여 이미지 파일이 저장되도록 만듬

SpringBoot - File Handling (실습)

SpringBoot - File Handling (왼 - FileController / 오 - ResponseDto[파일확장자, 파일이름등을 log로 Check하기 위함])
SpringBoot - File Handling (왼 - 정적파일[준비된 이미지 파일과 정정웹 파일(script.js, style.css)] / 오 - 동적 파일[이건 프로필 이미지 저장시 설정한 경로로 폴더 생성과 파일 이름과 확장자를 추가해주는 것을 보여줌])
SpringBoot - File Handling (왼 - 이미지파일을 정적파일에서 조회 / 오 - 이미지파일생성 후 동적파일에 저장된 이미지 파일을 조회)


[국비] 백엔드 과정
※ 오후 활동 ※
T : PM 13:00 - 18:00
SpringBoot - File Handling
※ [학습 내용] ※

SpringBoot - REST(Query Parameter)

  ★ 사용자가 회원가입을 하여 프로필을 생성할려고 할때 어떻게 작업할지를 정리하고, 각 기능에 대해서 학습함

  1. Entity
    - UserEntity를 생성하여 id, username, email, phone, bio, avatar를 생성하여 프로필 이미지를 저장해주는 기본적인 작업을 실시함
  2. Controller
    - UserController를 생성하여 사용자 정보수정, 사용자 프로이미지 설정해주는 메서드를 PutMapping 어노테이션을 생성하여 path를 설정하여, pathVariable 어노테이션을 이용해서 필요한 id, photo등 값을 받아오는 작업을 실시하고, service에 설정한 method를 호출하여 해당 값을 반환해주는 작업을 함
    - UserControllerAdvice를 생성하여 UserException을 만들어서 에러를 표현해주는 작업을 함
  3. Service
    - UserService에서 사용자가 회원가입을 할때 필요한 Entity를 저장하는 메서드와 사용자의 정보를 불러오는 메서드를 생성하고, 사용자의 이름, 전화번호, 소개글까지 수정할 수 있도록 해주는 메서드와 사용자의 프로필 이미지 업로드까지 해주는 메서드까지 생성해줌 

  4. Repository
    - UserRepository에서는 JpaRepository를 상속받고 UserEntity를 사용하고 type은 Long으로 받도록 하고 username을 받아오는 메서드와 username이 존재하는가를 boolean타입 메서드까지 생성해줌
  5. Exception
    - Status400Exception을 생성해 error message를 남겨주는 작업을 함
    - UsernameExistException을 생성해 Username의 에러코드를 보여주도록 해주는 작업을 실시함
  6. PostMan
    - HTTP 통신을 하면서 각 file 확장자가 잘 저장되는지와 사용자 생성, 수정, 프로필 이미지 생성, 수정 기능이 잘 표현이 되는가를 Test함
SpringBoot - File Handling (실습)

SpringBoot - File Handling(UserController)
SpringBoot - File Handling(UserService)
SpringBoot - File Handling(UserRepository)
SpringBoot - File Handling(UserControllerAdvice)
SpringBoot - File Handling(왼 - Status400Exception / 오 - UsernameExistException)
SpringBoot - File Handling(1번 - createUsers / 2번 - createUserImage / 3번 - updateImage)
SpringBoot - File Handling(1번 - StudentEntity / 2번 - BaseEntity)
SpringBoot - File Handling(JpaConfig)
SpringBoot - File Handling(사용자 정보[결과물])


마무리
  - 오전 파일 업로드, 저장, 경로설정 부분에서 이전에 학습할때에는 매번 절대경로, 상대경로라는 개념과 정적파일, 동적파일에 대한 이해도가 낮았고, 어떻게 이미지를 저장하고, 생성되는지도 제대로 이해가 되지도않았고, 학습을 했더라도 매번 다시 실행하면 실패하는 경향이 있었는데, 이번계기로 완전한 해소가 되었고, 실패하지도 않고 오히려 더 상세하게 개념과 기능에 대해서 알려주셔서 좋았다. 오후는 사용자가 회원가입을 하는 시나리오를 가정하여 회원가입시 프로필 이미지가 없고, 회원가입후 이미지 파일을 업로드하면 어떻게 저장하고 변환해줄지를 배우면서 가장 쉽게 설명해주셔서 너무 즐겁게 학습했고, 그 과정에 대해서도 쉽게 와닿을 수 있어서 기쁘다. 프로젝트를 할때에도 참고하여 조금 더 내가 이해를 깊게 할 수 있고 사용하면서도 문제없도록 해보고 싶다. :)