본문 바로가기

Project/모면14

프론트엔드는 TDD가 필수인 것 같다 백엔드 준비하는 사람이 프론트엔드 종아리까지 담가본 후 느끼는 바이다. 프론트엔드야 말로 테스트 없이는 효율적인 코딩이 불가능한 것 같다. 프론트 개발하면서 고민이 컴포넌트 밑 컴포넌트 밑 컴포넌트의 state 변경 이벤트가 잘 작동되는지 확인하는 것이다. API로 데이터 호출해서 컴포넌트에 잘 띄워지는지 등등... 비즈니스 로직이 막 대단한 것도 아닌데 결합도가 높다고 해야 하나? 백엔드는 실행 비용이 그렇게 크지 않아서 테스트의 중요성을 못느꼈는데, 프론트엔드는 실행이 좀 많이 무겁다... 그리고 API 호출 할 수가 없잖아... 인가 기능도 해놔서 쿠키 설정도 해야 되는데... 맞아요... 지금 Mockito 이용해서 Mock API 호출 후 위젯에 잘 보여지는지 테스트 하고 있는데 계속 오류가 나.. 2023. 4. 11.
[Spring Boot] 테스트 코드에서 프로퍼티 NullPointerException 오류 해결 @Service public class TokenService { @Value("${secret}") private String secretKey; public String generateJWT(MemberInfoDto info) { // ... Jwts.builder() .setHeader(headers) .setClaims(payloads) .setIssuedAt(new Date(System.currentTimeMillis())) .setExpiration(new Date(System.currentTimeMillis() + 60 * 1000 * 60)) .signWith(SignatureAlgorithm.HS256, secretKey.getBytes()) .compact(); } //... } 토큰 .. 2023. 4. 6.
[Spring Boot] 개인 정보가 담긴 Jwt 토큰 발급 후 Cookie로 반환하기 oAuthService에 Jwt 토큰을 발급하는 메서드를 추가했다. public String generateJwtToken(MemberInfoDto info) { Map payloads = new HashMap(); Map headers = new HashMap(); headers.put("alg", "HS256"); headers.put("typ", "JWT"); payloads.put("name",info.getName()); payloads.put("picture", info.getPicture()); payloads.put("oauthId",info.getSub()); return Jwts.builder() .setHeader(headers) .setClaims(payloads) .setIssue.. 2023. 4. 4.
[Spring Boot] Security 없이 OAuth2 Google에서 받은 id_token 사용해 회원 정보 저장하기 2023.03.27 - [Project/모면] - [Spring Boot] Security 없이 OAuth2로 Google 로그인 구현, 유저 정보 얻기 이전 시간에 access_token을 발급받아오는 작업까지 마쳤다. 이제 id_token 안의 정보를 복호해 으로 만들어버리자. 먼저 RestTemplate을 이용해 POST 요청을 보내는 코드를 수정했다. ResponseEntity responseEntity = restTemplate .postForEntity(GOOGLE_TOKEN_URL, params, GoogleOAuthResponseDto.class); package com.momyeon.backend.dto; import lombok.AccessLevel; import lombok.Gette.. 2023. 4. 3.
[Spring Boot] 면접 질문 카테고리 분류하기 대분류 public enum Division { COMMON("공통"), TECH("기술"), EXPERIENCE("경험"), FIT("인성"), ; private String korTitle; Division(String korTitle) { this.korTitle = korTitle; } } 소분류 public enum SubDivision { MOTIVATION("지원동기", Division.COMMON), INTRODUCTION("자기소개", Division.COMMON), NETWORK("네트워크", Division.TECH), ALGORITHM("알고리즘", Division.TECH), OPERATING_SYSTEM("운영체제", Division.TECH), DATABASE("데이터베이스",.. 2023. 4. 1.
도망친 곳엔 낙원은 없다 으으으음 플러터 어려워........ 백엔드-프론트엔드 연동하는데 oauth2 로그인 로직에 오류가 있는 걸 발견했는데 어떻게 처리해야 할지 3일째 고민 중이다. 이게 돼야 다음 과정 착착착 하는데... 콜백 redirect_uri를 뭐로 설정해야 하는지 모르겠다. 프론트에서 콜백을 받을 수 있단 말이야?..? 왜 플러터는 내부 코드로 포트 고정 못하는 건데..? 지금이라도 리액트로 도망가? 라는 생각이 자주 들지만 '도망친 곳엔 낙원은 없다' 되뇌이며 붙잡고 있다. (리액트로 도망가도 똑같음) 일단 프론트엔드는 모든 과정이 쉽지 않기 때문에 로직은 고민하는 동시에 컴포넌트 배치 시작했다. 관련 서적 찾아보니 이제서야 감이 온다. statefull widget... 어려우면서 어렵지 않은...... 그리.. 2023. 3. 29.
[Spring Boot] Security 없이 OAuth2로 Google 로그인 구현, 유저 정보 얻기 세션 저장, Spring Security 코드가 난무한 클론코딩 글들이 너무 많아 그냥 내가 쓰는 글이다... 웹 서버 애플리케이션용 OAuth 2.0 사용 | Authorization | Google Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 웹 서버 애플리케이션용 OAuth 2.0 사용 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분 developers.google.com GCP 설정 후 "http://accounts.google.com/o/oauth2/v2/auth" 엔드포인트로 client_id, redirect_uri, response_type, scope 4개의 필수 파라미터와.. 2023. 3. 27.
[Flutter / Dart] Flutter로 REST API 호출하기 먼저 플러터에서 HTTP API를 호출하기 위해 패키지를 설치해야 한다. flutter pub add http flutter pub add test​ 나는 테스트 코드에서 실행시킬 거라 test 패키지도 설치했다. 정확히는 Dart 언어로 Api 호출하는 방법이다. 참고로 아래의 웹 사이트를 이용해 JSON 호출을 할 거다! https://jsonplaceholder.typicode.com/ JSONPlaceholder - Free Fake REST API {JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Serving ~2 billion requests ea.. 2023. 3. 26.