[인프런 워밍업 클럽 BE 0기] 발자국 1주차
Day1 서버 개발을 위한 환경 설정 및 네트워크 기초
스프링 프로젝트를 시작하기 전에 서버, 네트워크, HTTP, API, JSON이 무엇인지 등 서버 개발에 필요한 다양한 개념을 이해했다.
HTTP Method로 @GET(데이터를 달라고 요청), @POST(데이터를 저장해라), @PUT(데이터를 수정), @DELETE(데이터를 삭제) 존재한다.
HTTP 요청은 HTTP Method와 Path가 핵심이고, HTTP응답은 상태코드가 핵심이다.
클라이언트와 서버는 HTTP를 주고 받으며 동작하는데 이 때 정해진 규칙을 API라고 한다.
미션
어노테이션이 '마법' 같은 일을 해주기 위해서는 리플랙션 이라는 기술이 사용된다.
리플렉션은 라이브러리나 프레임워크를 개발할 때 간혹 사용되는 기술로, 코드를 직접적으로 호출하지 않고 코드를 제어하는 기술이다.
Day2 첫 HTTP API 개발
도서관리 Application 요구사항을 만들어 보면서 유저를 생성, 조회하는 시간을 가져보았다.
네트워크, IP, 도메인, 포트, HTTP요청과 응답구조, 클라이언트-서버 구조, API에 대해 알아보았고 Spring Boot를 이용하여 GET API와 POST API를 만들어 보았는데 서버를 재시작하면 유저 정보들이 날라가는 문제점이 있었다.
미션
가장 오래걸렸고 정말 머리가 터질 것 같은 미션이였다. 결국은 혼자 해결은 하지 못하였는데 그만큼 시간이 걸려서 API에 더욱 이해할 수 있는 시간을 갖을 수 있었다.
꼭 다시 한 번 해봐야하는 미션인 부분이다.
Day3 기본적인 데이터베이스 사용법
디스크와 메모리의 차이를 이해하고 DB의 필요성에 대해 알아보았다. Spring Boot서버를 이용해 DB에 접근해서 데이터를 저장, 조회, 업데이트, 삭제 할 수 있었다.
DDL과 DML에 대해 알아보았고 실제로 DB에 적용해보았다.
미션
람다식에 대해 알아보는 미션이였는데 아직 람다식에 대해 이해가 부족하다는 생각이 든다.
Java에 적용시키기엔 더욱 많은 연습이 필요할 것 같다.
Day4 데이터베이스를 사용해 만드는 API
도서관 Application에서 유저 정보 업데이트와 삭제에 대해 알아보았다.
한 클래스인 Controller에서 너무 많은 역할을 하고있다는 문제점이 있었다. 또한 API의 예외상황을 알아보고 예외를 처리하였다.
미션
문제 1,2,3을 다 본 후 시작했어야하는데 1을 먼저 풀어서 3을 풀 때 DB부분에서 약간 꼬인 부분이 생겼다.
시간이 나면 다시 풀어보는 시간을 가져야 할 것 같다.
다른사람들의 풀이를 해석해보는 시간도 가져야겠다.
Day5 클린 코드의 개념과 첫 리팩토링
클린코드의 중요성과 원래 있던 Controller 코드를 보다 좋은 코드로 리팩트링하였다.
Controller에서 Service, Repository역할을 나누어 생성하여 유지, 보수가 더 좋은 코드로 만들었다.
Controller은 API의 진입지점으로서 HTTP Body를 객체로 변환하는 역할을 하고 Service는 현재 유저의 유무를 확인하고 예외처리를 하는 역할을 한다, Repository는 SQL을 사용하여 실제 DB와의 통신을 담당하는 역할을 한다.
미션
배열로 수를 받아서 반복문을 통해 풀었고 6면체 주사위를 12면체 주사위로 바꾸기 위해 2개의 숫자를 바꿔야했다.
다른 풀이들을 보니 주사위의 면을 정하고 푸시는 분들도 계셔서 다시 생각해보는 시간을 가졌다.
1주차 후기
아직 자바 문법이 부족하여 다른 사람들의 코드를 보면서 이해를 할 수 없을 때가 종종 있었다.
람다식이 특히 부족한 부분이여서 더욱 공부해야한다.
1주차 동안 정신없이 달려왔지만 완벽히 아는 것이 아니라서 내 것 으로 만들기 위해서 다시 복습을 해야할 것 같다.
댓글을 작성해보세요.