[인프런 워밍업 스터디 클럽 1기] BE 1주차 회고록

[인프런 워밍업 스터디 클럽 1기] BE 1주차 회고록

첫 번째 발자국


자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]를 수강하고

인프런 워밍업 클럽에 참여하여 쓰는 첫 번째 회고록입니다.

 

학습 내용


스프링 프로젝트를 시작하는 방법과 네트워크, HTTP, API에 대한 기본적인 개념에 대해 학습하였습니다.

HTTP는 데이터를 주고 받는 표준이고, 행위와 자원은 HTTP 요청을 보내기 전에 약속을 해야합니다.

HTTP Method는 GET, POST, PUT, DELETE 가 있습니다.

 

예시로 GET는 HTTP 요청을 받는 컴퓨터에게 요청하는 행위입니다.

GET 요청의 경우 /portion 이라는 요청 받는 path와 ?의 구분기호로 세부 조건인 쿼리스트링 작성합니다.

GET /portion?color=red&count=2

POST 요청의 경우 데이터를 저장하는 것으로 바디를 사용합니다.

POST /oak/leather

DELETE는 데이터를 삭제하기 위해 쿼리스트링을 사용하고, PUT은 데이터를 수정하기 위해 바디를 사용합니다.

 

POST API는 HTTP Body를 활용해서 데이터를 받습니다.

데이터를 보낼 때는 JSON(객체표기법)을 활용합니다.

key : 'value' 형태로 Java 문법 상 Map<Object, Object> 형태와 유사합니다.

@PostMapping("/multiply") 
public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request){ 
   return request.getNumber1()* request.getNumber2(); 
}

위의 예시의 주요 어노테이션은 아래와 같습니다.

  1. @PostMapping : HTTP Method가 POST 이고, 요청 경로인 /path인 API를 생성합니다.

  2. @RequestBody : HTTP Body로 들어오는 JSON 파라미터로 데이터를 전달하는 객체인 DTO로 바꿔줍니다. DTO에는 JSON의 key 값이 명시되어야하며, 각 속성은 key 값과 동일하게 value도 타입에 맞게 작성합니다.

 

Database는 데이터를 구조화시켜 저장합니다. 마치 엑셀과 비슷하게 표처럼 구조화하여 저장합니다.

여기서 구조화된 데이터를 조회하는 언어를 SQL 이라고 합니다.

SQL문의 예시는 아래와 같습니다.

// DB 생성
create database [데이터베이스 이름];

// DB 조회
show databases;

// DB 삭제
drop database [데이터베이스 이름];

// DB 사용
use [데이터베이스 이름];

// TABLE 조회
show tables;

// TABLE 생성
create table [table 이름]
([필드 이름] [타입] [부가 조건],
[필드 이름] [타입] [부가 조건],
...
primary key([필드 이름])
);

// TABLE 삭제
drop table [table 이름];

테이블 자체를 생성, 삭제, 변경, 초기화 하는 것을 DDL(Data Definition Language) 라고 합니다.

 

테이블의 데이터를 조작하는 것을 일명 C.R.U.D 라고 부릅니다.

테이블 데이터를 조작하는 SQL문을 DML(Data Manipulation Language) 라고 합니다.

데이터 삽입

insert into [table 이름]([필드 이름1], [필드 이름2], ...)
values (값1, 값2, ...);

데이터 조회

select * from [db 이름];
select [필드 이름1], [필드 이름2] from [db 이름];

조건 데이터 조회

select * from [db 이름] where [조건];

데이터 업데이트

update [table 이름] set 필드1=값, 필드2=값,... where [조건];

조건문을 작성하지 않으면 모든 데이터가 바뀌니 항상 주의하자!

데이터 삭제

delete from [table 이름] where [조건];

조건문을 작성하지 않으면 모든 데이터가 삭제되니 항상 주의하자!

 

 

과제 내용


Day 1

HTTP 요청을 보내기 위한 Method 중 하나인 GET API 를 만들기 위해서 어노테이션을 사용했었습니다.

이를 통해 어노테이션을 사용하는 이유는 무엇인지, 또한 나만의 어노테이션을 만드는 방법에 대해 학습하게 되었습니다.

처음에는 클래스 위에 붙은 @ 어노테이션은 의미를 생각하기보다는 레이어에 맞는 동작을 하기 위해서 알맞는 어노테이션을 사용할 수 있도록 암기하는 것으로만 생각하고 공부했었습니다. 자바에서 제공하는 표준 어노테이션을 다양하게 찾아봤으며, 코드가 작동되면서 reflection을 이용하여 코드를 직접적으로 호출하지 않고 코드를 제어할 수 있는 다양한 기술의 집합체라는 것을 알게 되었습니다.

그리고, 유저가 직접 만드는 어노테이션을 구현해보면서 메타 어노테이션 즉, 내가 만드는 어노테이션의 유지 기간, 위치를 결정할 수 있도록 결정할 수 있는 사용자 친화적인 조작을 할 수 있다는 것을 알게 되었습니다.

📋 1일차 미션 : 어노테이션의 개념과 특징

 

Day 2

GET, POST API를 활용한 과제인데 일반적으로, GET을 사용할 때는 URL 뒤에 query를 사용하는 방식, POST를 사용할 때는 body를 사용하는 방식으로 볼 수 있습니다. 하지만 부득이하게 데이터의 양이 많이 복잡하다면 쿼리 파라미터로 받는 방식(GET)보다는 body 로 받는 방식(POST)로 변경하는 방향이 좋다는 것을 알았습니다.

또한, LocalDate 타입을 string 형태로 받아 치환을 해줬는데, 스프링부트 2.x.x 버전에서 @DateTimeFormat을 활용하여 localDate를 바로 받을 수 있는 방법도 알게 되어, java 문법의 변수가 아닌 스프링에 친화적인 어노테이션을 활용하여 구현할 수 있도록 많이 접해보고 공부해야겠다는 생각이 들었습니다.

📋 2일차 미션 : GET API와 POST API

 

Day 3

람다식의 등장한 이유와 람다식과 익명 클래스의 관계에 대한 내용을 중점적으로 공부하는 것이었습니다.

위의 내용을 공부하면서 함수형 프로그래밍과 @FunctionalInterface, stream API와 메서드 레퍼런스에 대한 내용에 대한 연관성도 함께 예시를 만들어보면서 공부했습니다. 위의 내용은 코딩테스트를 해본 사람이면 한 번 쯤은 실습해봤을 내용이라서 쉽게 내용을 이해할 수 있을 것이라고 생각했습니다.

하지만 필자의 경우 문법에 대한 내용보다는 코드를 구현할 줄만 알았습니다. 해당 내용을 공부하니 왜 만들어졌는지, 자바에서는 버전을 올라가면서 메서드를 쉽게 구현할 수 있도록 점차 단순화시키고 간결하게 표현할 수 있다는 것에 대해 면밀하게 알 수 있었습니다.

📋 3일차 미션 : 익명 클래스와 람다식

 

 

회고


기초 지식보다는 실제 프로젝트를 구현하기 위한 기술에 대한 내용에 중점을 두고 공부를 했었는데, 백엔드 개발을 하기 위한 서버 지식과 Java, Spring에 관한 내용을 다시 처음부터 하나씩 이해하면서 다시금 지식을 쌓을 수 있었던 거 같습니다.

또한, 강의만 듣는 게 아닌 과제를 해결하면서 강의에 대한 이해와 구현할 수 있는 능력을 키우면서 나 자신의 부족한 점과 다른 방식으로 구현할 수 있을 수 있을까라는 여러 방법에 대해 골똘하게 생각할 수 있는 계기가 되었던 거 같습니다.

댓글을 작성해보세요.