[Spring Boot] 섹션1

정수현·2025년 4월 8일

캡스톤

목록 보기
4/8

2025-04-07
2025-04-08

인강 링크

💻 Spring Boot로 서버 만들기 (Youtube)
💻 Spring Boot로 서버 만들기 (Inflearn)


1강 스프링 서버를 시작하는 방법

Intelli J 새 프로젝트 시작하기

💻 Intelli J 설정 링크

  • spring initializr에서 어쩌구 저쩌구 설정
  • 프로젝트를 새로 만들 땐 의존성(Dependencies)을 추가해야 한다.

용어 정리

  • 라이브러리 : 프로그래밍 개발할 때 미리 만들어져있는 기능을 가져다 사용하는 것
  • 프레임워크 : 프로그래밍을 개발할 때미리 만들어져 있는 구조에 코드를 가져다 끼워넣기

2강 @SpringBootApplication과 서버

  • @SpringBootApplication : Spring에 있는 다양한 설정들을 모두 자동으로 해주는 키워드
  • class LibraryAppAPplication : 클래스 명
  • SprinAppApplication.run(LibraryAppApplication.class, args); : LibraryAppApplication을 실행한다.
  • System.out.println() : 출력문

서버란

  • 어떠한 기능을 제공하는 프로그램
  • 그 프로그램을 실행시키고 있는 컴퓨터

⇒ 컴퓨터에게 원하는 정보를 얻으려면 '요청'을 해야 한다. 요청은 '인터넷', '네트워크'를 통해 할 수 있다.


3강 네트워크란 무엇인가

  • IP : 컴퓨터의 고유 주소
  • IP를 통해 데이터를 주고 받을 수 있다.
    예시) IP : 244.66.51.9, PORT : 3000
  • IP의 숫자를 외우기 힘들어 Domain Name이 등장하였다. (주소의 별칭이라 생각하면 됨)
    예시) 도메인 이름 : spring.com, PORT : 3000

IP = Domain Name
⇒ 이러한 체계를 Domain name System(DNS)라고 한다.


4강 HTTP와 API란 무엇인가

운송장 표준 1

  1. 운송장을 받는 사람에게 요청하는 행위
  2. 운송장이 가는 집 (주소, IP)
  3. 운송장을 실제로 받는 사람 (PORT)
  4. 운송장을 받는 사람에게 원하는 자원 (어떤 항목을 원하는가)
  5. 자원의 세부 조건

운송장 표준 2

  1. 운송장을 받는 사람에게 요청하는 행위
  2. 운송장을 받는 사람
  3. 운송장을 받는 사람에게 원하는 자원
  4. 실제 자원이 들어 있는 박스

실제 인터넷에서 데이터를 주고 받을 때 표준

  • HTTP (Hyper TExt Transfer Protocal)
  • Protocal : 표준, 약속

HTTP 예시 1

GET /portion?color=red&count=2
HOST: spring.com:3000
  1. GET : HTTP 요청을 받는 컴퓨터에게 요청하는 행위 (데이터를 달라) (HTTP Method)
  2. Host: spring.com:3000 (IP:PORT) : HTTP 요청을 받는 대상 (컴퓨터와 프로그램 정보)
  3. /portion : HTTP 요청 받는 컴퓨터에게 원하는 자원 (path라고 함)
  4. ? : 구분 기호 | color=red : 자원의 세부 조건 | & : 구분 기호 | count=2 : 자원의 세부 조건
    ⇒ 원하는 조건 (Query)

HTTP 예시 2

POST /oak/leather
Host: spring.com:3000 
오크가죽정보
  1. POST : HTTP 요청을 받는 컴퓨터에게 요청하는 행위 (저장하라) (HTTP Method)
  2. Host: spring.com:3000 : HTTP 요청을 받는 대상 (컴퓨터와 프로그램 정보)
  3. /oak/leather : HTTP 요청을 받는 컴퓨터에게 원하는 자원
  4. 오크가죽정보 : 실제 저장할 오크 가죽 정보
    ⇒ 전달할 데이터 (Body)

① 쿼리 Query

GET /portion?color=red&count=2
HOST: spring.com:3000 

② 바디 Body

POST /oak/leather
Host: spring.com:3000

오크가죽정보

HTTP Method

  • GET : 데이터를 달라 | Query
  • POST : 데이터를 저장하라 | Body
  • PUT : 데이터를 수정하라 | Body
  • DELETE : 데이터를 삭제하라 | Query

API (Appllication Programming Interface)

  • Interface : 정해진 규칙, 약속
  • 정해진 약속을 하여, 특정 기능을 수행하는 것

HTTP 요청

  • 첫째줄 (메서드 패스 쿼리)
  • 헤더 (여러줄 가능)
  • (한 줄 띄기)
  • 바디 (여러줄 가능)
POST /oak/leather <method query>
Host: spring.com:3000 <header>
<->
오크가죽정보 <body>

URL (Uniform Resource Locator)

  • http://spring.com:3000/portion?color=red&count=2
  • http : 사용하고 있는 프로토콜 (HTTP)
  • :// : 구분 기호
  • spring.com:3000 : 도메인이름:포트, 도메인 이름은 IP로 대체 가능
  • / : 구분 기호
  • portion : 자원 경로 (path)
  • ? : 구분 기호
  • color=red&count=2 : 추가 정보

HTTP 응답

  • 서버(Server) : 요청에 대한 응답을 제공(serve)한 컴퓨터
  • 클라이언트(Client) : 요청을 한 컴퓨터

응답에 들어가는 숫자 (상태 코드)

  • 매우 다양함
    200 OK | 300 Moved Permanently | 404 NotFound | 500 Internal Server Error

응답에는 추가 정보(바디)를 담을 수 있다

  • 첫째줄 (메서드 패스 쿼리)
  • 헤더 (여러줄 가능)
  • (한 줄 띄기)
  • 바디 (여러줄 가능)
HTTP/1.1 200 OK 
Content-Type: appication/json

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

총정리

  1. (웹을 통한) 컴퓨터 간의 통신은 HTTP 라는 표준화도니 방식ㅇ ㅣ있다.
  2. HTTP 요청은 HTTP Method (GET, POST)와 Path(/portion/)가 핵심이다.
  3. 요청에서 데이터를 전달하기 위한 2가지 방법은 쿼리와 바디이다.
  4. HTTP 응답은 상태 코드가 핵심이다.
  5. 클라이언트와 서버는 HTTP를 주고 받으며 기능을 동작하는 이때 정해진 규칙을 API라고 한다.



5강 GET API 개발하고 테스트하기

GET /portion?color=red&count=2
Host: spring.com:3000
  1. HTTP Method
  2. HTTP Path
  3. 쿼리 (key와 value)
  4. API 반환 결과
@RestController 
public class CalcualtorController {
    @GetMapping("/add"); // GET /add
    public int addTwoNumbers(@RequestParam int number1, @RequestParam int number2)
    {
        return number1 + number2;
    }
}
  • @RestController : 주어진 Calss를 Controller로 등록한다.
  • Controller : API의 입구
  • @GetMapping("/add") : 아래 함수를 HTTP Method가 GET이고 HTTP Path가 /add인 API로 지정한다.
  • @RequestParam : 주어지는 쿼리를 함수 파라미터에 넣는다.

GET /add?number1=10&number2=20

DTO (Data Transfer Object)

  • 데이터를 전달하는 객체
  • '쿼리' 라는 데이터를 오이붕에서 서버 안 Controller로 전달하는 역할
  • 이런 객체를 Data Transfer Object라고 한다.

6강 POST API 개발하고 테스트하기

JSON

  • Body는 JSON 형식으로 데이터를 받는다.
  • key-vaule 형태로 값을 저장한다.
{
	 "name" : "정수현",
     "age" : 23
}

POST

[CaculatorController.java]

@PostMapping("/multiply")
public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request)
{
	return request.getNumber1() * request.getNumber2();
}
  • @RequestBody : HTTP Body로 들어오는 JSON을 CalculatorMultiplyRequest로 바꾸어준다
  • CalculatorMulltiplyRequest : HTTP Body를 객체로 바꾸는 @RequestBody를 사용하는 경우, 생성자를 만들지 않아도 괜찮다.

[CalculateMultiplyRequest]

public class CalculatorMultiplyRequest {

    private final int number1;
    private final int number2;

    public CalculatorMultiplyRequest(int number1, int number2)
    {
        this.number1 = number1;
        this.number2 = number2;
    }

    public int getNumber1()
    {
        return number1;
    }

    public int getNumber2()
    {
        return number2;
    }
}
  • HTTP Body는 CalculatorMultiplyRequest에 매핑된다

0개의 댓글