team-coderder / Backend

일정 관리 웹 서비스 - 백엔드
0 stars 0 forks source link

멤버 리팩토링 & QA #51

Open JinJiyeon opened 1 year ago

JinJiyeon commented 1 year ago
JinJiyeon commented 1 year ago

1) 마이페이지 수정하기 호출할 때 데이터 형식이 의도한 것보다 자유롭다

api명 : /api/member/mypage?memberId=1
{
"nickname": "newNickname",
"password": "newPassword"
}
// dto
public class MemberUpdateDto {
    private String nickname;
    private String password;
}

// controller
@RequestMapping(value="/mypage", method= RequestMethod.PATCH)
public ResponseEntity<?> updateMyInformation(
        @RequestParam("memberId") Long memberId, @RequestBody MemberUpdateDto requestDto) {
    return ResponseEntity.ok().body(memberService.updateMyInformation(memberId, requestDto));
}

// service
memberUpdateDto.getNickname()

👉 nickname 외에 다른 게 들어가 있어도 상관없음! 그렇게 동작하나보다..

2) 로그아웃 api 호출이 안 된다

api명 : /logout
{
    "timestamp": "2022-12-03T04:20:19.128+00:00",
    "status": 405,
    "error": "Method Not Allowed",
    "path": "/login"
}

// api 호출 시 백엔드 서버에 찍히는 메세지
Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]
JinJiyeon commented 1 year ago

가설1. status code = 405 는 uri는 옳지만 method(GET, POST) 등이 틀렸을 때 발생한다.

시도1-1. 의도한 POST가 아닌 GET으로 호출해본다 결과1-1. 실패

시도1-2. controller의 POST를 GET으로 바꿔본다 결과1-2. 실패

👉 로그아웃 구현 사례를 조사해본 결과, GET이 아닌 POST로 구현하는 것이 적합하다. 다른 각도에서 접근해보자

가설2. springSecurity에서 /logout url을 점유하고 있을 것이다. formLogin 기능이 해당 url을 점유하고 있다.

시도2-1. WebSecurityConfig에서 formLogin().disable()을 추가한다 결과2-1. 실패

시도2-2. filter를 타기 전에 formLogin().disable()을 추가한다 결과2-2. 실패

가설3. 응답 메시지의 path가 /logout이 아닌 /login이다.

JinJiyeon commented 1 year ago

5) input data 유효성을 검사해야 한다

S사 : xml로 input data, output data를 관리한다. xml을 업로드하는 홈페이지가 있다. S사 차세대 : input data, output data를 관리하는 홈페이지가 있다. 물리명, 논리명, type, 길이, 필수값 여부를 입력해야 한다. K사 : 프론트 & 백이 대화한다. 문서화해둔다.

방법 1) 로직으로 구현

2) request dto에 @valid를 붙인다 필수값, 길이, 최소최대(@NotBlank, @Size, @Min, @Max) : https://lemontia.tistory.com/942 default value : https://www.baeldung.com/spring-value-defaults