PreProject 회고
작품:
Stack Overflow라는 개발자들의 커뮤니티 게시판을 클론 코딩 하였다.
기능은 기본적인 기능 + CRUD +이메일(인증) + 토큰 + 캡챠 + 등등
느낀점:
내일이면 pre-project를 마치는 날이다. 내가 생각하지만 처음보다 상당히 실력이 는 것같아 뿌듯함을 느낀다. 기본적인 CRUD에 대한 API를 처리하는 로직을 짜고 거기에 API를 사용하여 EMAIL, 등등 여러가지 기능을 하면서 정말 재밌었고, 이 길이 정말 나랑 잘 맞는 구나 느낄수 있던 프로젝트였다.
개발 에러사항:
개발 시 생긴 문제는 아래 와 같다.
1. 1:N사이에 양방향 관계를 맺어놓을때 Response에서 무한 참조가 생기게 되는 문제
Postman에서 테스팅을 하면서 response entity에 넣은 값을 다시 보내주는 경우에서 지속적인 무한 참조가 생겼다.
알아보니 관계를 맺게되면 서로 계속 참조하는 경우가 생겨서 무한 참조 에러가 생긴다는 것이다.
해결방안: 정말 오래 찾아보고 적용하면서 2가지의 방법이 있다는 것을 알게되었고, 우선 처음은
@JsonManagedReference @JsonBackReference 이것인데
1 : N 이렇게 mapping되고, ManageReference는 직렬화하고 Back은 직렬화를 막는다 즉 안에있는 것을 참조하지 않게 되는 것이다.
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id"
) 이것은 동일 한 것이 나왔을 때 가장 제일 먼저 나온 것만 참조하고 나머지는 id만 참조하는 것이다. 이렇게 하면 무한 참조를 해결할 수 있다.
2. google oauth url문제
google oauth 코드를 다 작성하고 테스트를 하는 과정에서 계속 오류가나길래 어떤 end point로 요청해야하는 지 몰랐는데
수소문 끝에 http://localhost:8080/oauth2/authorization/google 이게 기본이라는 것도 알게되었다...
http://localhost:8080/oauth2/authorization/github 이것은 깃허브..
3. cors 문제
프론트에서 백으로 본 요청을 보내기전에, 선발대를 먼저 보내는데, 이게 Options 요청입니다. 이 Options 요청에 대한 응답 헤더에 Access-Control-Allow-Origin 이라는걸 담아서 보내고,
본 요청을 할 때, 이 Access-Control-Allow-Origin 을 포함 시켜서 요청을 하게 됩니다. 그런데 본 요청을 서버가 검사했을 때,헤더에Access-Control-Allow-Origin이 없으면 Access-Control-Allow-Origin이 null이라는 에러가 발생합니다. 그래서 cors 에러가 납니다.
이걸 방지하려면 헤더를 모든 헤더 허용으로 하거나, Access-Control-Allow-Origin의 값을 넣어서 반환하면 됩니다. 일단, 개발환경이니, 저는 모든 헤더 허용으로 했습니다.
이렇게 해도 cors가 뜨는경우 다음으로 ngrok 문제를 의심할 수 있습니다.
Ngrok는 회원이 아니면 시간제한 등 제한사항이 많으므로, 꼭 회원가입을 하고 token 등록을 하셔서 사용해야 합니다.
그리고, ngrok를 실행할 때,
ngrok http --host-header=rewrite 8080
이렇게 입력하면 ngrok의 cors 문제를 해결할 수 있다 하네요.
4. git merge문제
백엔드 개발자와 같이 협업을 하다보니 깃을 클론해서 개발하기 시작했는데 같은 부분을 수정하거나 , 계속 pull을 땡기지않고 수정할 경우에 지속적인 깃에 에러와 컴플릭트가... 이거는 노하우가 필요한 부분이라고 느겼습돠..
5. 배포문제
지금 AWS 프리티어를 통해 배포를 하는 과정인데 너무 너무너무 느려가지고 배포가 잘안되는 상황이다.. 이것 은 금방 해결할 수있을것 같다.