spring

개요Apple Oauth를 테스트하기 위해서는 Service IDs에 호스트 주소를 등록해야 한다. 만약에 등록되지 않은 주소로 접속할려고 한다면 아래와 같이 Invalid Request에러가 발생한다.Service IDs에 도메인을 등록해야 한다는 것을 알았으니 등록할 도메인의 규칙을 알아보자면 다음과 같다. domain 주소와 subdomain 주소가 필요하다. (localhost는 사용할 수 없다.)https로 연결되어 있어야 한다.그러면 원격환경에서 개발을 하면되지 않냐? 라고 질문할 수도 있지만 이렇게 할 때는 디버깅의 어려움이 발생할 수 있다. hosts 파일 변경hosts 파일은 쉽게 말하자면 dns 같은건데 ip 도메인 주소와 운영체제 상에서 맵핑 시켜놓은 파일이다. sudo vi /pri..
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 )..
verify 책으로 공부할 때는 무심코 넘겼던 주제 중에서 verify라는 메서드가 있었다. 원하는 메서드가 몇 번 수행했는지를 추적할 수 있는 메서드이다. 지금 프로젝트가 초기단계인데 벌써 쓸 일이 두 번이나 생겼으니 이에 대해서 기록해볼려고 한다. 사용법 Mockito.verifyNoMoreInteractions: 더 이상 메서드 호출이 없음을 검증합니다. Mockito.verifyZeroInteractions: 메서드 호출이 없었음을 검증합니다. Mockito.verifyInOrder: 메서드 호출 순서를 검증합니다. Mockito.verify(mock, Mockito.atLeast(n)).method(arg1, arg2) : method 메서드가 최소 n 번 호출되었는지 검증합니다. 예시 일단 해..
잘 참고하고 있던 사이트에 작성된 코드가 제대로 되지 않아서 새로 써보는 글이다. Spring Boot Server에 HTTPS 설정을 하기 위해서 사용한다. 설치법 ubuntu certbot 설치 apt-get -y install letscript인증서 발급 순서 certbot을 통한 SSL 발급 sudo certbot certonly --standalone PKCS12 파일로 변환 생성된 인증서는 /etc/letsencrypt/live 폴더에 존재할텐데 해당 폴더로 가서 openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore-aws.p12위와 같이 명령어를 치면 PKCS12로 변환이 된다. 나는 keystore-aws.p12..
이 글을 작성하게 된 계기? 🤔 아래와 같은 S3에 업로드, 삭제 테스트를 작성하던 중 삭제를 할 때 삭제할 파일이 미리 올라가있지 않다면 해당 파일을 삭제할 수 없었다. 그렇다고 삭제하는 코드에서 한 번 더 업로드를 하는 것도 싫었고 생성 삭제를 하나의 테스트로 묶기도 싫었다. @Test @DisplayName("S3에 파일 업로드 테스트") void upload() { // given String fileName = "test.mp4"; MultipartFile file; try { byte[] content = Files.readAllBytes(Paths.get("src/test/resources/test.mp4")); file = new MockMultipartFile(fileName, fileN..
🤔 이 게시물을 작성하게 된 계기 새로 시작한 프로젝트에서 동영상 업로드를 구현할 일이 생겨서 구현하는 중에 에러 메시지를 뱉어내지 않고 Unkown Exception이 자꾸 떨어지는 것을 확인했다. 그리고 게시물을 4~5개 정도 서칭하고 지피팅을 30분째 하고 있을 때 로그 레벨을 Debug 까지 낮추고 나서야 Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded] 라는 에러가 발생하고 있는 것을 알게 되었다. 그리고 그 에러 검색을 해보고 나서야 이걸 해결하는 방법에 대해서 알게 되었다. 해결 방법은 application.yaml 파일에 max file size를 설정..
Youtube Data API 구글 클라우드 콘솔에서 Youtube Data Api를 사용설정을 해준다. 👇 코드 찾느라 애먹을 것도 없이 youtube 공식 깃허브에 예제 코드가 올라와 있다. 이해가 안가는 부분만 조금 서칭해보고 사용해주면 된다.
rookied
'spring' 태그의 글 목록