1. 컨트롤러 메서드 명명 및 DTO 설계
메서드 이름 제안
createCustomer
(간단하고 직관적)
registerCustomer
(고객 등록의 의미)
createShopVisitor
(DTO 이름과 일치)
DTO 네이밍
VisitorCreationDTO
CreateVisitorRequest
VisitorCreateRequest
✅
CustomerCreationRequest
자동 매핑 설정
@PostMapping("/customers")
public ResponseEntity<ApiResponse<VisitorDetailResponse>> createCustomer(
@PathVariable Integer shopId,
@RequestBody @Valid VisitorCreationDTO request) {
// @RequestBody 어노테이션 필수!
// JSON 요청 body가 자동으로 DTO 객체로 매핑됨
return ResponseEntity.ok(ApiResponse.success(response));
}
2. 날짜 처리 (Date vs LocalDate)
문제점
- 프론트엔드: JavaScript Date → JSON 직렬화 시 문자열 변환
- 백엔드: Entity에서 Date vs LocalDate 타입 선택
해결방안
프론트엔드에서 보내는 방식
// ISO 문자열로 변환 (권장)
const requestData = {
name: formData.name,
birthday: formData.birthday.toISOString().split('T')[0] // "1990-05-15"
};
// input[type="date"] 사용 시 자동으로 "YYYY-MM-DD" 문자열
<input type="date" {...register('birthday')} />
백엔드 DTO 설정