IDE: IntetlliJ Ultimate
Spring Boot: 3.3.0
JDK: 17
front에서 validation 체크를 해도, postman에서 테스트할 시에는 체크가 안 될 수도 있음.
그래서 back에서도 validation 체크가 될 수 있도록 막아야 함.
💾 AuthController.java
@Slf4j
@RequiredArgsConstructor
@Controller // 1. IoC 2. 파일을 리턴하는 controller
public class AuthController {
// 회원가입버튼 -> /auth/signup -> /auth/signin
@PostMapping("/auth/signup")
public @ResponseBody String signup(@Valid SignupReqDto signupReqDto, BindingResult bindingResult) { // key=value (x-www-form-urlencoded)
if (bindingResult.hasErrors()) {
Map<String, String> errorMap = new HashMap<>();
for (FieldError error : bindingResult.getFieldErrors()) {
errorMap.put(error.getField(), error.getDefaultMessage());
log.info("error.getDefaultMessage() = " + error.getDefaultMessage());
}
return "오류남";
} else {
User join = authService.join(signupReqDto);
log.info("join: {}", join.toString());
return "auth/signin";
}
}
}
- `@ResponseBody`가 있으면, data를 응답함
👉 @ResponseBody
- Spring Framework에서 사용하는 애노테이션
- Controller method의 반환 값을 HTTP 응답의 본문으로 직렬화하여 클라이언트에게 전송하는 역할을 함
- 직렬화: 메서드가 반환하는 객체를 JSON, XML 등으로 변환하여 HTTP 응답 본문에 포함시킴. Spring에서 기본적으로 Jackson 라이브러리를 사용하여 JSON으로 변환함
- REST API 개발: `@ResponseBody`는 RESTful 웹 서비스를 만들 때 자주 사용됨. API에서 데이터를 요청하면, 이 애노테이션이 붙은 메서드가 데이터를 JSON 형태로 반환할 수 있게 함
💾 SignupReqDto.java
package org.example.photogram_re.web.dto.auth;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.example.photogram_re.domain.user.User;
@Data // Getter, Setter
public class SignupReqDto {
@Size(min=2, max=20)
@NotBlank
private String username;
@NotBlank
private String password;
@NotBlank
private String email;
@NotBlank
private String name;
private String role;
public User toEntity() {
return User.builder()
.username(username)
.password(password)
.email(email)
.name(name)
.role(role)
.build();
}
}
- 기존 `private String username`위에 `Max(20)`
- `@Size(min=2, max=20)`으로 변경
- `@NotBlank` 추가
회원가입 시
- 정상적으로 회원가입 시, 페이지가 return 되지 않고, 문자열이 return 됨
- `username`에 문자열을 초과하여 입력하면 '오류남' 텍스트가 보임
어떤 경우에는 텍스트로, 어떤 경우에는 페이지로 return 되는 것은 비효율적임.
이다음 강의에서 글로벌 예외 처리로 수정 예정.
이지업클래스 [메타코딩] 스프링부트 SNS프로젝트 - 포토그램 만들기 강의 실습
참고
OpenAi. (2024) ChatGPT (version 3.5)[Large Language model]. https://chat.openai.com
300x250
'Framekwork > photogram' 카테고리의 다른 글
[스프링 부트 포토그램] 22강 인증 회원가입 - 유효성 검사하기 (0) | 2024.09.05 |
---|---|
[스프링 부트 포토그램] 21강 인증 회원가입 - 전처리 후처리 개념잡기 (0) | 2024.09.04 |
[스프링 부트 포토그램] 20강 인증 회원가입 - 비밀번호 해시 (BCryptPasswordEncoder) (0) | 2024.09.03 |
[스프링 부트 포토그램] 19강 인증 회원가입 - 완료 (0) | 2024.09.03 |
[스프링 부트 포토그램] 18강 인증 회원가입 - User 모델 만들기 (0) | 2024.09.02 |