[IntelliJ]IntelliJ 프로젝트 기초설정, 환경세팅(MongoDB연결, REST API구동) - 관련에러들
1. MongoDB연결
본 프로젝트를 하기 전 db와 api 호출이 정상적으로 연결이 되는지만 확인하기 위해 test 클래스와 test db를 만들었다.
java>resources>application.properties 파일을 열어서 다음 코드를 넣어준다.
(단, mongodb와 관련한 의존성 주입이 되어있어야 함!)
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
딱히 건드리지 않았다면 mongoDB의 기본 포트는 27017, 그리고 테스트할 데이터베이스명을 입력한다.
처음에는 이렇게 테스트했다가 잘 실행이 되는 것을 보고 추후에 username과 password를 추가해주었다.
mongoDB에서도 createUser()를 통해 testmajors db에 사용자와 권한을 추가했다.
db.createUser({user:'binunu', pwd:"1234", roles:[{role:"readWrite", db:"testmajors"}]})
이렇게 하면 username과 password가 맞지 않으면 연결이 되지 않는다.
2. API 테스트
postman을 통해서 간단한 user객체들을 만들어 get 메소드를 통해 가져오는 테스트를 했다.
먼저 간단하게 컨트롤러,dto,repository 디렉토리 구조를 만든다.
MongoRepository를 상속받아주고 컨트롤러와 dto도 심플하게 만들어준다.
그리고 포스트맨을 통해서 api를 호출하면
http://localhost:8080/findAll
잘 나옴!
3. 에러모음
1. pleas sign in - spring-security
처음에 계속 이런 로그인 화면이 떠서 포트의 문제인가 싶어 다른 포트로도 갈아탔는데 아무리 해도 이 화면에서 벗어날 수 없었다.. 서치를 한참 하다가 깨달았음... jwt를 사용한 로그인을 구현해보겠다고 프로젝트 생성할 때 spring security를 주입했었는데 그것때문에 권한과 관련해서 이런 화면이 뜨는 것이었다... 아직 로그인은 시작도 안했고 지금은 연결만 확인하는게 목적이므로 build.gradle에서 해당 부분을 주석처리해서 해결했다.
그리고 build.gradle파일을 수정하게 되면(maven도 마찬가지) gradle을 업데이트 시켜야하는데 intellij를 처음 써봐서 대체 어디있는지 찾기가 힘들었다
view > Tool Windows > Gradle 을 눌러서 gradle창을 우측에 띄우고 프로젝트명을 우클릭해서 Refresh Gradle Dependencies를 결국 찾을 수 있었다..!
2. CORS - WebConfig
그리고 api테스트를 하는데 뭔가 연결은 되는 것 같은데 데이터가 안뜨는 문제가 있었다. 이것도 알고보니 CORS와 관련해서 config설정을 해줘야 하는 것이었다.
CORS 에러는 보안상의 이유로 브라우저가 다른 출처의 리소스에 접근을 제한하는 정책으로 발생하는데 스프링부트 애플리케이션에서 WebMvcConfigurer를 구현하여 CORS를 활성화하고 다른 출처에서의 요청을 허용하도록 만들어야 했다.
.
참고로 addMapping부분은 /**으로 지금은 전체 요청에 대해 허용을 해뒀는데 나중에 특정 url루트에 대해서만 허용하도록 수정해야함. 그리고 다른 기능들을 하나씩 구현하면서 필요한 부분도 많지만 지금은 연결에 필요한 부분만 추가했다
역시 프로젝트는 초기설정단계가 난해한 것 같다.. 한 번 설정해놓으면 오랫동안 수정할 일이 거의 없어서 잘 까먹는게 문제.. ㅠ 열심히 기록을 해 둬야지..