inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

손예지
0

강의 요약


Day 2 <서버 개발을 위한 환경 설정 및 네트워크 기초>

새로운 스프링 프로젝트 시작 방법

spring initializer 접속

@SpringBootApplication과 서버

어노테이션: Java의 문법으로 @ 뒤에 이런저런 문자열을 붙이는 것, 스프링을 실행하기 위해 필요한 다양한 설정들을 모두 자동으로 해 줌

Server: 어떠한 기능을 제공하는 프로그램 (컴퓨터)

서버와 요청: 기능을 제공하기 위해서는 누군가의 요청 필요

네트워크란 무엇인가

택배 시스템 <-> 네트워크

집 <-> 컴퓨터

주소 <-> IP

주소 별칭 <-> 도메인 이름

택배를 받는 사람 <-> port / 3000

HTTP와 API란 무엇인가

HTTP(HyperText Transfer Protocol)

HTTP Method

HTTP 요청은 HTTP Method(GET, POST)와 Path(/portion)가 핵심

GET: 데이터를 달라, 쿼리

POST: 데이터를 저장하라, 바디

API(Application Programming Interface)

URL(Uniform Resource Locator)

<http://spring.com:3000/portion?color=red&count=2>

HTTP Status Code

HTTP/1.1 200 OK
Content-Type: application/json

{
	"name":"A",
	"age":null
}

GET API 개발 및 테스트

API를 이루고 있는 요소

덧셈 API 생성

@RestController: 주어진 Class를 Controller로 등록, API의 입구

@GetMapping("/add"): 함수를 HTTP Method가 GET이고 HTTP Path가 /add인 API로 지정

@RequestParam: 주어지는 쿼리를 함수 파라미터에 넣음

Day 3 <첫 HTTP API 개발>

POST API 개발 및 테스트

GET API에서 데이터 받기: 쿼리 이용

POST API에서 데이터 받기: HTTP Body 이용

JSON(JavaScript Object Notation): 객체 표기법, 무언가를 표기하기 위한 형식으로 중괄호가 양쪽에 있음

곱셈 API 생성

HTTP Method : POST

HTTP Path: /multiply

HTTP Body (JSON)

API 반환 결과: 숫자 (곱셈 결과)

유저 생성 API 개발

유저 등록 API

유저 조회 API

Day 4 <기본적인 데이터베이스 사용법>

Database와 MySQL

Database: 데이터를 구조화 시켜 저장

RDB(Relational Database) - MySQL: 데이터를 표처럼 구조화 시켜 저장

SQL(Structured Query Language): 표처럼 구조화된 데이터를 조회하는 언어

MySQL 접근 방법 -> MySQL Command List Client (무료)

MySQL에서 데이터베이스 생성

데이터베이스 생성

create database [데이터베이스 이름];

데이터베이스 목록 조회

show databases;

데이터베이스 삭제

drop database [데이터베이스 이름];

데이터베이스 안으로 접속

use [데이터베이스 이름];

테이블 생성

create table 테이블 이름 (
  ...
);

테이블 제거

drop table [테이름 이름];

MySQL Type

정수: tinyint, int, bigint

실수: double, decimal(A,B)

문자열: char(A), varchar(A)

날짜, 시간 타입: date, time, datetime

테이블 데이터 조작

C.R.U.D

데이터 넣기

INSERT INTO [테이블 이름] (항목) VALUES (값);

데이터 조회

SELECT * FROM [테이블 이름];

데이터 수정

UPDATE [테이블 이름] SET 항목 = 값;

데이터 삭제

DELETE FROM [테이블 이름] WHERE 항목 = 값;

Spring에서 Database 사용

Spring <-> MySQL 연동을 위한 yaml 파일 작성

spring:
  datasource:
    url: "jdbc:mysql://localhost/library"
    username: "root"
    password: 
    driver-class-name: com.mysql.cj.jdbc.Driver

이후 유저 테이블 생성, jdbcTemplate를 이용하여 POST API 변경, GET API 변경, 데이터 입력 및 조회

Day 5 <데이터베이스를 사용해 만드는 API>

유저 업데이트 API, 삭제 API 개발과 테스트

유저 이름 업데이트

유저 삭제

유저 업데이트 API, 삭제 API 예외 처리하기

SELECT문으로 해당 id나 name을 가진 사용자를 조회한 다음 그 사용자가 없을 시 IllegalArgumentException()으로 예외 처리

Day 6 <클린코드의 개념과 첫 리팩토링>

좋은 코드(Clean Code)는 왜 중요한가

코드: 요구사항을 표현하는 언어

개발자: 요구사항을 구현하기 위해 코드를 읽고 작성

Controller에서 모든 기능을 구현하면 안 되는 이유

Controller를 3단 분리하기

Controller의 함수 1개가 하고 있던 역할

  1. API가 진입 지점으로써 HTTP Body 객체 변환 -> Controller 역할

  2. 현재 유저가 있는지 없는지 확인하고 예외 처리 -> Service 역할

  3. SQL을 사용해 실제 Database와의 통신 담당 -> Repository 역할


회고


부트캠프를 수료한 지 오래되어서 JAVA의 대부분을 까먹었다고 봐도 무방한데 실무에 필요한 부분을 먼저 배우고 기초 지식을 채워나가는 것도 효율적인 방법이라 판단되어 스터디를 시작하게 되었습니다. 아직 알아야 할 것이 더 많지만 애매하게 알고 있었던 부분에 대해 상당히 많이 이해가 되어 신기했고 앞으로의 방향성에 대해서도 고려해 볼 수 있는 1주차였습니다.

백엔드 인프런 워밍업 클럽 스터디 발자국

답변 0