Account API 명세
Account와 관련된 API의 형태를 정한다.
API의 입력과 출력을 정리한다.
1. Account API 명세
기본적인 CRUD와 관련된 API와 프로필 이미지를 조회하는 API를 만든다.
Delete와 관련된 API는 연관관계가 모두 정립된 후에 생성할 것이기 때문에 지금은 정의하지 않는다.
여기선 입력과 정상 출력의 경우만 정리하고 각종 예외 상황은 추후 API 구현 포스팅에서 자세히 다룰 예정이다.
■ Create
□ createAccount
Account를 생성하고 저장.
[createAccount]
@PostMapping("/account")
public ResultMessage createAccount(@Valid @ModelAttribute AccountForm accountForm,
Errors errors) throws IOException {}
● 입력
○ accountForm : 모든 필드는 비어있지 않아야 한다.
◎ username
◎ password
◎ nickname
◎ profileImgFile
◎ gender
◎ birthDate
● 출력
○ ResultMessage : 성공 메시지를 담아서 반환
■ Read
□ getMyAccount
현재 로그인된 Account를 조회
[getMyAccount]
@GetMapping("/account")
public AccountDto getMyAccount(@LoginAccountId Long loginAccountId) {}
● 출력
○ AccountDto : 현재 로그인된 Account의 Dto
◎ id
◎ username
◎ nickname
◎ profileImgName
◎ gender
◎ birthDate
◎ win
◎ lose
◎ point
□ getAccount
특정 Account를 조회
[getAccount]
@GetMapping("/account/{accountId}")
public AccountDto getAccount(@PathVariable Long accountId) {}
● 입력
○ accountId : 경로 변수
● 출력
○ AccountDto : accountId의 Account로 생성.
□ getAccountList
모든 Account를 조회.
[getAccountList]
@GetMapping("/account/all")
public Result<List<AccountDto>> getAccountList() {}
● 출력
○ List<AccountDto> : 모든 Account를 조회해서 List<AccountDto>로 반환
◎ Result에 감싸 져서 반환됨
□ getAccountByPage
Account를 Page로 조회.
[getAccountByPage]
@GetMapping("/accounts")
public Page<AccountDto> getAccountByPage(AccountSearchCond accountSearchCond, Pageable pageable) {}
● 입력
○ accountSearchCond : Account를 nickname으로 검색하는 데 사용
◎ nickname : 해당 nickname를 포함하는 nickname을 가진 Account를 조회
○ pageable : 값이 입력되지 않으면 기본값 적용(page = 1, size = 20)
◎ page
◎ size
◎ sort
● 출력
○ Page<AccountDto> : 입력받은 조건으로 AccountDto를 페이징 한 결과를 반환
□ getProfileImg
Account의 ProfileImg를 조회.
[getProfileImg]
@GetMapping("/account/profileImg/{accountId}")
public ResponseEntity<Resource> getProfileImg(@PathVariable Long accountId) throws MalformedURLException {}
● 입력
○ accountId : 경로 변수
● 출력
○ UrlResource : accountId로 조회한 Account의 profileImg
■ Update
□ updateInfo
현재 로그인한 Account의 일부 정보들을 변경.
[updateInfo]
@PutMapping("/account/info")
public ResultMessage updateInfo(@LoginAccountId Long loginAccountId,
@Valid @RequestBody AccountUpdateInfoForm accountUpdateInfoForm, Errors errors) {}
● 입력
○ AccountUpdateInfoForm
◎ nickname
◎ gender
◎ birthDate
● 출력
○ ResultMessage : 성공 메시지를 담아서 반환
□ updateProfileImg
현재 로그인한 Account의 profileImg를 변경
[updateProfileImg]
@PostMapping("/account/profileImg")
public ResultMessage updateProfileImg(@LoginAccountId Long loginAccountId,
@Valid @ModelAttribute AccountProfileFileForm accountProfileFileForm,
Errors errors) throws IOException {}
● 입력
○ AccountProfileFileForm
◎ profileImgFile
● 출력
○ ResultMessage : 성공 메시지를 담아서 반환
□ updatePassword
현재 로그인한 Account의 password를 변경.
[updatePassword]
@PutMapping("account/password")
public ResultMessage updatePassword(@LoginAccountId Long loginAccountId,
@Valid @RequestBody AccountUpdatePasswordForm accountUpdatePasswordForm,
Errors errors) {}
● 입력
○ AccountUpdatePasswordForm
◎ password : 현재 패스워드
◎ newPassword : 변경할 패스워드
◎ confirmPassword : 변경할 패스워드 확인
● 출력
○ ResultMessage : 성공 메시지를 담아서 반환
'프로젝트 > PongGame' 카테고리의 다른 글
Account Validation (0) | 2022.05.10 |
---|---|
Account Repository (0) | 2022.05.10 |
EntityListeners (0) | 2022.04.28 |
LoginAccountIdArgumentResolver (0) | 2022.04.28 |
FileProcessor (0) | 2022.04.28 |
댓글