Open JinJiyeon opened 1 year ago
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 외에 다른 게 들어가 있어도 상관없음! 그렇게 동작하나보다..
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]
가설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이다.
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
[x] 마이페이지 수정하기 호출할 때 데이터 형식이 의도한 것보다 자유롭다
[ ] 로그아웃 api 호출이 안 된다
[ ] 주석 제거
[ ] 에러 메시지 이외에 데이터가 나오는 것
[ ] input data 유효성 검사