📚

Backend 공간

필수 기능 리스트업! - 위치 기반 편지(상대방을 위한 글 남기고, 나도 받을 수 있는 편지)
1.
사용자는 익명 처리
2.
편지 심기 - 반경 설정 미리 합시당
3.
편지 열람
4.
편지 수정&삭제
수정과 삭제는 글을 쓴 위치로(반경 기반)
5.
열람할 수 있는 토큰 - 편지를 쓰면 크레딧을 받고 → 열람할 수 있는 권한이 생김 !
6.
열람 인원 수 조회

기술 스택 → 프로젝트 구성

Java 11 + Gradle + MySQL + yml + JPA
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 만들어서 BodyheaderHttpStatus를 지정하여 반환
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
복사