Project GB PokéTeam Week 2

포켓몬 팀 빌더 GB PokéTeam 개발 2주차 #SpringBoot #WSL #Kotlin #DAO

Project GB PokéTeam Week 2
Photo by Thimo Pedersen / Unsplash

들어가며

주차별 포스트 형식을 조금 바꿔서, 그 주에 작업한 내용을 금요일마다 정리해 올리는 식으로 하려고 합니다.

Spring Boot Project Setting

프로젝트 생성에 제가 예전에 올려 둔 포스트가 도움이 되었습니다. 블로그에 남겨 두길 잘했다 싶어지는 순간입니다.

Spring Boot 초기 설정
Spring Boot 개발을 위한 초기 세팅
Troubleshoot Spring Boot missing package Error
package org.springframework.web.bind.annotation does not exist
Spring Boot CLI 프로젝트 생성부터 첫 실행까지
Spring Boot CLI 프로젝트 생성부터 스크립트 작성과 실행까지

Working on WSL2

Ubuntu 서버가 있긴 하지만, 원격 접속해서 사용하는 것과 직접 로컬에서 작업하는 것 사이의 편의성 차이는 정말 큽니다. 다행인 것은 윈도우에서 WSL을 지원해 주니 운영 중인 서버와 동일한 22.04 LTS 버전 우분투를 로컬에서 굴릴 수 있다는 것입니다. 그런데 초기 세팅할 때 조금 애먹었습니다. 자세한 내용은 아래 포스트에 있습니다.

OCI Permission Denied (PublicKey)
OCI 서버 SSH 접속과 문제 해결

Kotlin on VSCode?

알고리즘 할 때를 제외하곤 VSCode는 많이 쓸 일이 없었는데, 마침 웹 개발이니 이번에 한 번 써 보기로 했습니다. 단순한 엔드포인트 몇 개 추가하고 굴리는 데는 문제가 없었는데, Lombok을 설치하는 과정에서 뭔가 꼬였는지 작동을 안 하기 시작했습니다. 웃기게도 IntelliJ에서 좀 작업하다 다시 VSCode에서 작업하니까 문제가 없습니다. 제가 사용하는 Gradle이 Kotlin 기반이라 그런지 언어 서버와도 자꾸 문제가 발생하네요. 결국 IntelliJ 쓰기로 했습니다. 아직은 불안정한 걸까요?

DAO

API Docs에 명시한 대로, 외부에서 접근 가능하도록 엔드포인트를 만들어야 합니다. REST API 각 Method별 매핑 Annotation이 있습니다. GET이라면 @GetMapping, POST라면 @PostMapping 이런 식입니다.

엔드포인트는 GB PokèTeam의 주요 기능인 pokedex,poketeam-builder,poketeam-share 세 가지로 크게 나누었으며 지금까지는 실질적으로 포켓몬 정보를 가져오는 api/v1/pokedex/pokemon만 만들어 두었습니다.

@RestControllerPokedex에서 리퀘스트를 받은 뒤 이를 위한 서비스 클래스에 전달합니다. 서비스 클래스에서는 PokéAPI로부터 포켓몬 정보를 받아온 뒤 해당 정보를 담은 DTO인 Pokemon을 반환합니다.

api/v1/pokedex/pokemon/{id or name}