halucinor / e-voting

0 stars 0 forks source link

투표 기능 구현 - [merged] #18

Closed halucinor closed 1 year ago

halucinor commented 1 year ago

Merges feature/vote -> dev

@mentor/mentor_2023.01

📝 Description

💻 How To Test


TODO [ ] 테스트 코드 작성 [ ] 동시성 테스트

💽 Commits

  1. Entity(voteModel)
  2. 관련 Controller, Service, Repository

🖼 결과

❓ Check

halucinor commented 1 year ago

In GitLab by @Luke on Jan 11, 2023, 13:20

Commented on src/main/java/com/gabia/evoting/web/AgendaController.java line 58

REST API에선 일반적으로 POST 혹은 PUT으로 자원이 새로 생성된 경우엔 201 Created 상태를 리턴해줍니다. https://developer.mozilla.org/ko/docs/Web/HTTP/Status <- 이쪽 문서를 참고해보시면 좋을 것 같습니다. 또한 http 코드를 문자열로 하드코딩하기보단 스프링에 내장된 HttpStatus를 활용해보시는 것도 좋을것 같네요.

halucinor commented 1 year ago

In GitLab by @Charlie on Jan 11, 2023, 13:30

Commented on src/main/java/com/gabia/evoting/web/AgendaController.java line 39

Restful API 에서 말하는 collection 과 document(또는 element, 또는 resource) 는 무엇인가요? 작성하신 URL 들이 설계 기준에 맞는지 검토해보시면 좋겠습니다.

GET /agendas
GET /agenda/{id}
POST /agenda
PATCH /agenda
halucinor commented 1 year ago

In GitLab by @Pablo on Jan 11, 2023, 20:34

Commented on src/main/java/com/gabia/evoting/service/VoteService.java line 33

~QUESTION
agenda가 존재하지 않아 IllegalArgumentException이 발생되었을 때 API는 어떻게 응답되나요?
의도한 API 응답 구조가 맞으신가요?

halucinor commented 1 year ago

In GitLab by @Pablo on Jan 11, 2023, 20:47

Commented on src/main/java/com/gabia/evoting/web/VoteController.java line 38

~QUESTION
투표 실패 케이스의 응답 또한 Http 상태코드 201 응답되도록 하셨는데, 의도한 부분이 맞으신가요?
API 응답에서 의도한 기능이 정상적으로 수행되지 못하고 실패되었을 때,
올바른 Http 상태코드를 확인해보시면 좋을 것 같습니다.

halucinor commented 1 year ago

상태코드 확인해서 수정해 보겠습니다!

halucinor commented 1 year ago

changed this line in version 2 of the diff

halucinor commented 1 year ago

changed this line in version 2 of the diff

halucinor commented 1 year ago
GET /agendas : agenda collection 조회
GET /agenda/{id} -> /agendas/{id} : agenda element 조회
POST /agenda : agenda 생성
PATCH /agenda -> /agendas/{id} : agenda 수정

collection 과 document의 차이를 염두해서 URL 설계를 다시 해보겠습니다 :) 감사합니다

halucinor commented 1 year ago

아직 IllegalArgumentException 이 발생할 경우에 대한 예외 로직을 아직 처리하지 않았습니다. HTTP 상태코드에 따른 예외처리 작업을 수행하기 위해 @ExceptionHandlerResponseEntity를 사용해 예외처리를 구현할 계획입니다!

참고 https://velog.io/@kiiiyeon/%EC%8A%A4%ED%94%84%EB%A7%81-ExceptionHandler%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC

halucinor commented 1 year ago

실패 케이스에 대한 Http 상태코드는 아직 구현하지 못했습니다. 다음의 투표 케이스에 따라 HTTP 상태코드를 리턴 하고자합니다.

  1. 사용자 입력 실패(투표 초과, 존재하지 않는 안건 등...)
  2. 성공 -> 201(post success)
halucinor commented 1 year ago

In GitLab by @Pablo on Jan 12, 2023, 13:16

Commented on src/main/java/com/gabia/evoting/web/VoteController.java line 38

~CHECK
여러 실패 케이스에 대한 HTTP 상태코드도 같이 참고해보시면 좋을 것 같습니다.

사용자 입력 실패(투표 초과, 존재하지 않는 안건 등...)

위 케이스의 경우 BadRequest 케이스로 간주 할 수 있을 것 같네요.

halucinor commented 1 year ago

In GitLab by @Pablo on Jan 12, 2023, 13:16

Commented on src/main/java/com/gabia/evoting/service/VoteService.java line 33

~CHECK

halucinor commented 1 year ago

In GitLab by @Charlie on Jan 12, 2023, 13:22

Commented on src/main/java/com/gabia/evoting/web/AgendaController.java line 39

넵. 확인했습니다

halucinor commented 1 year ago

In GitLab by @Pablo on Jan 12, 2023, 15:12

resolved all threads