분류 전체보기 (264) 썸네일형 리스트형 @RequestBody의 원리와 RequestDto 만드는 법 @RequestBodyHTTP 요청의 본문(payload) 데이터를 Java 객체로 매핑해줌JSON 데이터를 DTO 객체로 변환 위와 같이 요청을 JSON 데이터를 요청 보내면 아래의 객체로 매핑됨!@PostMapping("/signup") public ResponseEntity signUp(@Valid @RequestBody SignupRequestDto requestDto){ SignupResponseDto signupResponseDto = authService.signUp(requestDto); return new ResponseEntity(signupResponseDto, HttpStatus.CREATED); } 동작 원리1. HttpMessageConver.. 일정 관리 서버 Develop : 댓글, 일정 페이징 조회 기능 추가 생성 시간 및 수정시간 관리 : JPA AuditingJPA Auditing : 엔티티의 생성, 수정 시간을 자동으로 기록하고 관리해주는 기능@CreatedDate : 엔티티가 처음 저장될 때 생성 시간 저장@LastModifiedDate : 엔티티가 업데이트될 때 수정 시간 저장 설정방법@EnableJpaAuditing를 활성화@EntityListeners(AuditingEntityListener.class)를 엔티티에 추가추상 클래스 필드에 @CreatedDate, @LastModifiedDate 등의 어노테이션 사용나머지 객체에서 추상클래스를 extends해서 사용@EnableJpaAuditing // Auditing 기능(entity 생성, 수정 시간 자동으로 기록) 활성화@SpringBootAp.. 일정 관리 서버 Develop : 예외처리 및 검증, 비밀번호 암호화 구현 예외처리 및 검증에러 응답 객체@Getterpublic class CommonErrorResponse { private String status; private String message; private int code; public CommonErrorResponse(HttpStatus status, String message){ this.status = status.name(); this.code = status.value(); this.message = message; }} 예외 처리 클래스RuntimeException을 상속한 ApplicationException을 생성@Getterpublic class ApplicationExcep.. 일정 관리 서버 Develop : API 추가 설계 및 세션 로그인 구현 댓글 연관관계를 추가한 ERD고민했던 점처음에 ERD를 설계할 때 댓글에 회원 FK가 들어가서 테이블이 사이클 형태가 만들어져서 잘 설계한 것인지 고민됨일정 테이블에도 FK로 회원ID를 가지고 있는데 굳이 댓글 테이블에도 회원 FK를 넣어야 하나 고민했음하지만 생각해보니 일정은 "일정 작성자 식별자"만 가지고 있고, 댓글은 "댓글 작성자의 식별자" 를 가지고 있는 것이기 때문에 추가하는 것이 맞았음 -> 짱구가 쓴 일정에 짱구아빠 흰둥이가 댓글을 달 수 있기 때문에 엄연히 다르다! SQLCREATE TABLE member( id BIGINT AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT '회원 식별자', name VARCHAR(200.. 일정 관리 서버 Develop 설계 (API 명세서, ERD 작성) API 명세서수정이나 삭제는 로그인이 성공한 후에 진행한다고 가정하고 만들었기 때문에 따로 요청 Dto에 비밀번호를 넣지 않음 Dto 목록생성, 수정 등 역할에 따라 Dto를 분리함크게 일정, 회원, 로그인 파트 3가지로 나눔 ERD회원은 여러개의 일정을 작성할 수 있기 때문에 회원 : 일정 = 1 : N 테이블 생성 SQLCREATE TABLE member( id BIGINT AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT '회원 식별자', name VARCHAR(200) NOT NULL COMMENT '이름', email VARCHAR(50) NOT NULL COMMENT '이메일', password VARCHA.. 가장 가까운 같은 글자 / 프로그래머스 정답딕셔너리를 이용해서 알파벳과 해당 위치를 기록만약 동일한 알파벳이 이미 딕셔너리에 있다면 현재 위치로 갱신def solution(s): ans = [] dic = {} idx = 0 #문자열 처음부터 순환 for i in s: #문자열이 딕셔너리에 없는 경우 if i not in dic.keys(): dic[i] = idx ans.append(-1) idx += 1 #문자열이 딕셔너리에 있는 경우 else: ans.append(idx - dic[i]) dic[i] = idx idx += 1 return ans 두 개 뽑아서 더하기 / 프로그래머스 정답중복을 제거하기 위해서 set 사용set은 순서가 없기 때문에 정렬을 할 수 없음list를 set으로 변경하면 기존의 순서를 유지하지 않음!그렇기에 set으로 중복 값을 제거해 준 다음 -> 순서 보장이 안되서 오름차순 유지가 안됨 -> 다시 리스트로 변환 후 정렬def solution(numbers): answer = [] num = list(numbers) for i in range(0, len(num)): for j in range(i+1, len(num)): answer.append(num[i]+num[j]) answer.sort() set_answer = set(answer) answer = list(set_answer) .. Spring Validation BindingResult Validation 오류를 보관하는 객체여기서 검증할 때 사용했던 객체임! @PostMapping public ResponseEntity createSchedule(@RequestBody @Valid ScheduleSaveRequestDto requestDto, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new InvalidRequestException(INVALID_REQUEST_EXCEPTION); } return new ResponseEntity(scheduleService.saveSchedule(requestDto), HttpSt.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 33 다음