필수 기능 리스트업! - 위치 기반 편지(상대방을 위한 글 남기고, 나도 받을 수 있는 편지)
1.
사용자는 익명 처리
2.
편지 심기 - 반경 설정 미리 합시당
3.
편지 열람
4.
편지 수정&삭제
•
수정과 삭제는 글을 쓴 위치로(반경 기반)
5.
열람할 수 있는 토큰 - 편지를 쓰면 크레딧을 받고 → 열람할 수 있는 권한이 생김 !
6.
열람 인원 수 조회
기술 스택 → 프로젝트 구성
•
Java 11 + Gradle + MySQL + yml + JPA
•
EC2 + RDS
•
CI/CD
DB
SQL
API 명세서
개발 규칙
Branch
•
master : 제품으로 출시될 수 있는 브랜치
•
develop : 다음 출시 버전을 개발하는 브랜치
•
feature : 기능을 개발하는 브랜치
•
release : 이번 출시 버전을 준비하는 브랜치
•
hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
브랜치 타입/이슈번호-api종류
ex. feature/1-apple-signin
Commit
붙이고 / issue번호-내용
ex. “[Feat] apple signin repository”
Pull Request
참고사항
CustomResponse Class 사용 방법
적용 전 return response 사용 예시
•
ResponseEntity에 Message 만들어서 Body, header, HttpStatus를 지정하여 반환
Message message = new Message();
HttpHeaders headers= new HttpHeaders();
headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
message.setStatus(StatusCode.OK);
message.setMessage("사용자 정보 저장 성공");
message.setData(userInfo);
return new ResponseEntity<>(message, headers, HttpStatus.OK);
Java
복사
Controller 에서 return response 사용 예시
•
요청에 성공한 경우
@PostMapping("/info")
public ResponseEntity<CustomResponse> addUserInfo (
@RequestHeader(value = "Access-Token") String accessToken,
@RequestBody UserInfoSaveDto userInfoSaveDto) {
User updateUser = userService.saveUserInfo(userInfoSaveDto, accessToken);
return new CustomResponse<>(updateUser, SAVE_USER_SUCCESS).toResponseEntity();
}
Java
복사
•
Success Response Sample
{
"status": "OK",
"message": "사용자 정보 저장 성공",
"data": {
"id": 1,
"nickname": "김OO",
"email": "aaa@gmail.com",
"role": "USER",
"userName": "김OO",
"userAge": 20,
"userGender": "여자",
"userRegion": "OO",
"userProfileImageUrl": null,
"roleKey": "ROLE_USER"
}
}
JSON
복사
•
에러 처리
if (jwtService.isNotValidRefreshToken(refreshToken)) { // Refresh Token 이 유효하지 않은 경우
log.debug("[REFRESH TOKEN EXPIRED] : {} is invalid refresh token", refreshToken);
httpHeaders.set("msg", "Invalid Refresh Token");
return new CustomResponse<>(TOKEN_INVALID).toResponseEntity(httpHeaders); //"msg" 헤더 추가
}
Java
복사
•
Error Response Sample
{
"isSuccess": false,
"responseCode": 4001,
"message": "유효하지 않은 토큰입니다",
"httpStatus": "CONFLICT"
}
JSON
복사