TIL

TIL_072

Mon Groy 2024. 7. 23. 22:45

한 controller 에서 타입을 받아서

그에 따라 다른 타입의 게시글 작성되도록 설정하기

 

Enum 으로 게시글의 타입을 구분해 놓았기 때문에

입력받은 pathVariable 을 Enum으로 변환하여 해당 Service 단의 메서드로 연결시켜야 한다

 

스프링에서

StringToEnumConverterFactory

를 지원하고 있기 때문에 매개변수에서 바로 사용이 가능하다

 

@PostMapping
public ResponseEntity<ResponseDataDto<?>> createFeed (
        @PathVariable final String group_name,
        @RequestParam(value = "category") FeedEnumCategory category,
        @RequestPart(value = "file", required = false) MultipartFile file,
        //@AuthenticationPrincipal UserDetailsImpl UserDetails,
        @Valid @RequestBody final FeedRequestDto request
) {
    ResponseDataDto<?> responseDto;
    switch(category) {
        case ARTIST -> responseDto = feedService.createFeed(group_name, /*UserDetails*/, file,  request );
        case NOTICE -> responseDto = feedService.createNotice(group_name, file, /*UserDetails*/, request);
        case SCHEDULE -> responseDto = feedService.createSchedule(group_name, UserDetails,request);
        default -> throw new IllegalArgumentException();
    }

    return ResponseEntity.ok(new ResponseDataDto<>(ResponseStatus.CREATED, responseDto));
}

 


Trouble Shooting - 팀장님

 

회원가입을 구현했는데

테이블이 한 칸씩 밀리거나 다른 값이 입력 되는 문제

 

User 객체 생성자 매개변수 순서 맞추기

후 정상 작동


 

https://kapentaz.github.io/java/spring/Enum-and-@RequestParam-in-Spring/#

 

Enum and @RequestParam in Spring

Spring에서 문자나 숫자로 전달된 Request Parameter를 Enum 타입으로 처리하는 방법과 custom conveter를 만드려면 어떻게 해야 하는지 확인해보겠습니다.

kapentaz.github.io