[TIL 26일 차] Sprint Mission4 - 디스코드: Controller Layer 구현
오늘의 학습
- 개발 진행 상황
- Service 로직을 활용해 웹 API 구현
- 사용자 관리를 위한
UserController구현- User 삭제를 위한
UserDeleteService서비스 클래스 구현
- User 삭제를 위한
- 권한 관리를 위한
AuthController핸들러 클래스 구현- 사용자 로그인 API
login핸들러 메서드 구현
- 사용자 로그인 API
- 채널 관리를 위한
ChannelController핸들러 클래스 구현- 공개 채널 생성 API
createPublicChannel핸들러 메서드 구현 - 비공개 채널 생성 API
createPrivateChannel핸들러 메서드 구현 - 특정 사용자가 볼 수 있는 채널 조회 API
findAllByUserId핸들러 메서드 구현 - PUBLIC 채널 정보 수정 API
updatePublicChannelInfo핸들러 메서드 구현 - 채널 참여 API
joinChannel핸들러 메서드 구현 - 채널 탈퇴 API
leaveChannel핸들러 메서드 구현 - 채널 owner 변경 API
changeChannelOwner핸들러 메서드 구현 - 채널 삭제 API
deleteChannel핸들러 메서드 구현
- 공개 채널 생성 API
- 메시지 관리를 위한
MessageController핸들러 클래스 구현- 메시지 생성 API
createMessage핸들러 메서드 구현 - 특정 채널 메시지 조회 API
findAllMessagesByChannelId핸들러 메서드 구현 - 메시지 수정 API
updateMessage핸들러 메서드 구현 - 메시지 삭제 API
updateMessage핸들러 메서드 구현
- 메시지 생성 API
- 사용자 관리를 위한
- Service 로직을 활용해 웹 API 구현
- 고민 : 채널 참여/탈퇴, 채널 주인 교체 핸들러 메서드의 HTTP 메서드는 뭘로 해야 할까?
- HTTP 메서드는 도메인 클래스의 필드 변경 여부가 아닌, API에서 어떤 데이터를 어떤 의미로 다루는지에 따라 결정하기
- ex: 채널 참여 ➡️ POST / 채널 탈퇴 ➡️ DELETE
- HTTP 메서드는 도메인 클래스의 필드 변경 여부가 아닌, API에서 어떤 데이터를 어떤 의미로 다루는지에 따라 결정하기
- 고민 :
PathVariable에 어떤 값을 넣는 게 적절할까?- 행위의 “대상”을
PathVariable로 설정- ex: 채널 참여 ➡️ 참여라는 행위의 대상이 되는 “채널”을
PathVariable로 설정
- ex: 채널 참여 ➡️ 참여라는 행위의 대상이 되는 “채널”을
- 행위의 “대상”을
프로젝트 요구 사항
2. 기본 요구사항
2-1. 컨트롤러 레이어 구현
- DiscodeitApplication의 테스트 로직은 삭제하세요.
- [진행 중] 지금까지 구현한 서비스 로직을 활용해 웹 API를 구현하세요.
- 이때
@RequestMapping만 사용해 구현해보세요. - 아래의 “웹 API 요구사항” 참고
- 이때
- 웹 API의 예외를 전역으로 처리하세요.
//...
3. 웹 API 요구사항
3-1. 사용자 관리
//...
- 사용자를 삭제할 수 있다.
//...
3-2. 권한 관리
- 사용자는 로그인할 수 있다.
3-3. 채널 관리
- 공개 채널을 생성할 수 있다.
- 비공개 채널을 생성할 수 있다.
- 공개 채널의 정보를 수정할 수 있다.
- 채널을 삭제할 수 있다.
- 특정 사용자가 볼 수 있는 모든 채널 목록을 조회할 수 있다.
3-4. 메시지 관리
- 메시지를 보낼 수 있다.
- 메시지를 수정할 수 있다.
- 메시지를 삭제할 수 있다.
- 특정 채널의 메시지 목록을 조회할 수 있다.
//...
GitHub Repository 주소
https://github.com/JungH200000/10-sprint-mission/tree/sprint4
Leave a comment