Spring/Error & Review

문제 재기 만약에 어떤 메서드에서 에러를 터트린다면 orElseThrow라는 이름으로 함수 이름을 끝내는게 적합한지에 대한 코드 리뷰를 받았다. 여태 명시적으로 메서드를 작성하는게 좋고, 클린코드를 읽고 난 이후 현대 IDE에서 자동완성기능이 정말 좋아졌기 때문에 굳이 메서드를 축약형으로 쓴다거나 줄이기 위해서 애를 쓸 필요 없다고도 생각을 했다. 제이슨님의 의견 유쾌한 스프링방에서 제이슨님이 두 가지 정도의 의견을 제시해주셨다. 모든 메서드는 Exception을 발생시킬 가능성을 내포하고 있다. 만약에 저 메서드에서 Member 값이 null 값이 들어가게 되면 NullPointException이 발생하는 등 모든 메서드들은 항상 Exception이 발생할 가능성이 내재되어 있다는 것이다. update..
Refactoring 기존에 Riot API를 호출하는 부분은 LolSearchAdapter라는 네이밍으로 아래와 같이 개발이 되어있었다. @Service public class LolSearchAdapter { @Value("${lol.api.key}") private String apiKey; private final RestTemplate restTemplate; @Autowired LolSearchAdapter(RestTemplate restTemplate) { this.restTemplate = restTemplate; } /** * User의 게임 목록을 가져옴 * @param matchId * @return */ public MatchRecord searchMatch(String matchI..
문제 QueryDSL을 공부하던 중에 QueryDSL을 이용해서 Join 하는 코드를 개발하는 중이었는데, 이 코드가 제대로 동작하지 않았다. 문제가 되는 코드는 다음과 같았다. @Test @DisplayName("조인 Error가 발생함") void searchErrorTest() { Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("member2", 20, teamA); Member member3 = new Member("memb..
개발 일기 챔피언 이름 번역 롤 API 호출시 챔피언 이름이 영어로 나왔고 사이트에서는 한글로 표현이 되야 하는데, 이를 플러터/웹 사이트 각각 처리해주지 말고 백엔드에서 처리해주는게 어떻겠냐는 플러터 개발자님의 의견이 있었다. 합리적인 의견인 것 같아서 그렇게 하기로 했다. 그리고 또한 한글로 번역을 했을 때 이를 데이터 베이스에 저장을 해야할지, 그래서 Entity도 리팩터링을 해야할지에 대한 생각도 들었다. 결론적으로 챔피언이 많지 않기 때문에 (해봐야 게임 당 10건) 변환 작업시 많은 시간을 소요할 것 같다고 생각되지 않아서 데이터 베이스에 저장하지 않고 비즈니스 로직에서 변환하는 작업을 해주기로 했다. https://developer.riotgames.com/docs/lol 위 사이트에서 La..
Riot은 인게임에서 게임 ID를 복사하면 "게임아이디" 이런식으로 복사되게 해놓고는 게임 아이디로 검색을 호출할 때는 "KR_게임아이디" 이런식으로 받는다. 그래서 이 KR이라는 것을 다음과 같이 LolSearchAdapter에 넣어주고 한동안 Controller를 생성하지 않았다. public MatchRecord searchMatch(String matchId) { try { matchId = "KR_" + matchId; MatchRecord result = restTemplate.getForObject( "https://asia.api.riotgames.com/lol/match/v5/matches/" + matchId + "?api_key=" + apiKey, MatchRecord.class )..
서론 public TokenDto signUp(AppleSignUpRequestDto signUpRequest) { AppleUserInfo appleUserInfo = appleIDTokenValidator.extractAppleUserinfoFromIDToken(signUpRequest.getIdentityToken()); if(signUpRequest.getName() == null || signUpRequest.getName().isEmpty()) { throw new ApiException(AppleTokenStatus.INVALID_SIGNUP_FORM); } appleUserInfo.setName(signUpRequest.getName()); MemberEntity member = Membe..
사건의 발단☣️ 현재 내 프로젝트의 구조는 다음과 같이 생겼다. 원래 api 모듈에 로그인, 토큰 발급, 토큰 검증 로직이 있었는데 apigw를 도입하면서 account에 따로 JWT Token 검증 API를 생성해서 apigw -> accout 모듈에서 Token 검증 후 라우팅 -> 목적지 서버 로 변경을 해줄려고 하다가 에러가 발생했다. 에러내용 : io.jsonwebtoken.UnsupportedJwtException: Signed Claims JWSs are not supported. 해결🎉 아마 많은 분들이 익숙한 코드일거라고 생각한다. 내 Validation 로직에서 parseClaimJwt 부분을 parseClaimJws로 변경해주면 이 문제는 해결된다. override fun valida..
발단 🦶 인자를 RequestParam으로 받아오면서 PathVariable로 요청하고 있는 멍청한 짓을 했다. 당연히 Controller에서 에러가 터졌고 ExceptionHandler 중에서 Controller 단의 에러를 핸들링하고 있는 로직이 없어서 Security 기본 ExceptionHandler에서 "머여? 에러났셔?@.@ 그럼 로그인 일단 한 번 해봐~@.@" 라며 리다이렉트 해주니... 나는 처음에는 @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {..
rookied
'Spring/Error & Review' 카테고리의 글 목록