[게시판 서버] 기본 게시판 기능 및 jwt
프로그래밍 언어 및 기타/Spring Boot

[게시판 서버] 기본 게시판 기능 및 jwt

https://github.com/sglee487/isolia-spring-api/tree/179da382bbc0f72b721e2a3a2570c0c69ab12b52

 

GitHub - sglee487/isolia-spring-api: change FastAPI to Spring boot

change FastAPI to Spring boot. Contribute to sglee487/isolia-spring-api development by creating an account on GitHub.

github.com

 

한 가지 문제가 있는데, 게시판을 작성하려면 로그인을 해야되고, 로그인을 기억해야 한다. 난 jwt를 사용했다.

그래서 jwt관련 코드 먼저 작성하려 했던 것 같다.

 

 

회원가입이나 로그인할 때 jwt token을 발급해서 주고, 게시물 작성 같은 로그인이 필요한 작업을 수행할 때 header에 token도 같이 받아 확인하는 방식. controller에서 token을 확인 후, service에 작성하라고 넘겨준다. 작성 뒤 해당 게시물의 id Long을 반환하게 했다.

 

별다른 함수 정의 없이 JpaRepository의 save만 해주면 자기가 알아서 DB에 잘 저장한다.

 

 

이걸 postman으로 테스트 해본다. 잘 된다.

로그인 / 회원가입할 때 받은 jwt token을 header의 Token으로 입력한다. 그럼 controller의 @RequestHeader("Authorization") authorization: String 변수로 저장된다.

 

이제 이걸 response하는 body를 dto에 response로 정의해준다. 그냥 쌩으로 반납하게 하면 모든 칼럼을 보여주기 때문에 유저의 암호화된 패스워드, 게시물 전체보기에서 preview를 만들었지만 사실 안의 내용도 다 가져오는 등의 낭비가 있기 때문.

 

 

companion object의 of 함수로 저장해서, user나 board같은 엔터티 모델을 주기만 하면 알아서 지정해주도록 하면 코드가 더 깔끔해진다.

 

 

아 물론 postman으로 테스트하려면 jwt token을 계속 따로 복사해서 header에 붙여넣기 하는게 귀찮아져서 테스트를 이 때쯤 만들었다. jwt를 테스트하는게 아닌 service를 테스트하는 것. 통합하더라도 어차피 따로따로 만들어야 문제 생겼을 때 어디서 생겼는지 자세히 알수 있지 않을까..

https://github.com/sglee487/isolia-spring-api/blob/179da382bbc0f72b721e2a3a2570c0c69ab12b52/src/test/kotlin/com/group/isolia_api/service/board/BoardServiceTest.kt

 

GitHub - sglee487/isolia-spring-api: change FastAPI to Spring boot

change FastAPI to Spring boot. Contribute to sglee487/isolia-spring-api development by creating an account on GitHub.

github.com

 

 

 

여기까지 한 뒤에 또 강의 내용이 여기서 JpaRepository 대신에 querydsl로 리팩토링 한것도 그렇고, 개인적으로도 공부하려고 바꿨었다. 생각만큼 잘 되진 않았지만.. 기술적인 문제라 시간을 오래 들이면 해결될 문제다.