일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- expression statement is not assignment or call html
- 파이콘
- 파이썬
- 코딩온라인
- 출처: 자바의 신 8장
- PID
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- taskkill
- github markdown
- gitbash
- SSR
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- 자바파이썬
- khaiii
- 비동기
- 플젝후체크
- 마크다운
- 서버사이드렌더링
- #스파르타코딩클럽후기 #내일배움캠프후기
- 클라이언트사이드렌더링
- Morphological analysis #Corpus
- Anaconda
- github
- 모바일웹스킨
- terminate
- Kakao
- Machine Learning
- 필사
- address
- Technical Writing
- Today
- Total
개발 일기
백엔드만으로 Firebase 로그인 테스트 (view 없이) 본문
API 서버 프로젝트를 하면서, 먼저 로그인/회원가입을 구현하고 있다.
FirebaseOAuth 에서는 Client가 토큰을 headers 에 넣어서 백엔드에 보내주는 로직이 있다.
백엔드만 있는 상황에서는 이 로직을 구현할 수는 없지만, 토큰 외에 로직이 완성되었음을 테스트해야하기 때문에, 임시 방편으로 local 용 환경을 만들었다. 먼저
(1) 회원 가입 컨트롤러 (users/local이라는 APi 를 만들어준다.
(2) Local 용 security Config,
(3) LocalJwtfilter,
(4) application-local.yml 을 따로 만들었다.
이렇게 하면 profile을 local로 설정해서 따로 테스트를 할 수 있다.
컴파일 에러는 없었는데, 포스트맨 post test 를 하니 먼저
No primary or single unique constructor found for class LocalMemberSignupRequestDto 라고 나온다. 기존에
@AllArgs 만 롬복에 존재했는데, NoArgs 를 추가해주니까 해당 에러는 사라졌다.
다음 에러 메시지
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
org.postgresql.util.PSQLException: 오류: "email" 칼럼(해당 릴레이션 "member")의 null 값이 not null 제약조건을 위반했습니다.
보내는 파라미텉 자체를 인식하지 못한다 (email을 포함해서 보냈다) 살펴보니 Controller 코드에 @RequestBody가 빠졌다.
//로컬 서버 회원 가입
@PostMapping("/local")
public ResponseEntity<LocalMemberSignupRequestDto> localRegister(@RequestBody LocalMemberSignupRequestDto localDto) {
Member registeredUser = userDetailsServiceImpl.register
(localDto.getUid(), localDto.getEmail(), localDto.getUsername(), localDto.getProfileUrl());
return new ResponseEntity<>(new LocalMemberSignupRequestDto(registeredUser), HttpStatus.CREATED);
// return ResponseEntity.status(HttpStatus.CREATED).body(new LocalMemberSignupRequestDto(registeredUser));
}
마지막으로 Required request body is missing이라는 에러다.
완전히 같은 상황은 아니지만, 이것도 Requestbody를 컨트롤러가 완전히 인식하지는 못한 에러 같았다. 원인을 body형식을 text 로 보냈기 때문이라고 파악하신 걸 보고, 참고해서 나도 json 형태로 다시 보냈다 (body의 raw 를 클릭하면 -postman, json도 선택할 수 있다)
https://scshim.tistory.com/320
유저가 저장되었다!
로그인도 성공!