본문 바로가기

Programming/Spring boot

섹션 1. Spring Boot로 개발하는 RESTful Service

* 인프런의 Spring Boot를 이용한 RESTful Web Services 개발 강의를 듣고 정리한 내용입니다.

 

Spring Boot 개요

- 최소한의 설정과 서드파티 라이브러리를 모두 사용할 수 있다.

- 단독 실행 가능한 어플리케이션 생성 가능

- 내장형 톰캣을 가지고 있어서 실행을 위해 별도의 설치가 필요 없다.

- 개발자가 쉽게 개발할 수 있도록 지원해주는 것이 많다.

- https://start.spring.io 로 쉽게 시작할 수 있다.

 

실행 방법

1. Spring Boot Application

2. Auto Configuration

3. Component Scan

=> 3가지가 있음

 

REST API 설계

조회, 생성, 삭제 기능 구현할 예정사용자 등록, 전체 사용자 불러오기, 사용자 상세 조회, 사용자 삭제, 게시글 목록, 게시글 생성, 게시글 상세 조회 구현 예정

 Spring Boot Project 생성

Postman을 설치 후 구글으로 로그인했다.

 

IntelliJ를 켜서 프로젝트를 실행시키자.

application.yml 파일을 변경하여 포트를 8080에서 다른 걸로 바꿔보자.

위와 같이 파일에 내용을 입력해줬더니, 자동으로 톰캣 포트가 8088로 바뀐 것을 알 수 있다.

HelloWorld Controller 추가

Controller 파일을 작성하고 url을 통해 경로에 접속해본다.

화면에 Hello World 가 나오는 것을 알 수 있다.

Postman으로 확인한 결과 url을 크롬에 입력했던 것과 똑같이 입력하고 Send 버튼을 누르면

아래에서 결과와 상태코드를 확인할 수 있다.

 

HelloWorld Bean 추가

어노테이션을 제대로 사용하려면 intelliJ File에서 Settings에서 위와 같은 설정을 해주어야 한다.

Plugins에서 Lombok을 설치해준다.

왼쪽의 Structure을 확인하면 어노테이션으로 인해 생성자와 getter setter 메소드까지 만들어져있는 것을 확인 가능하다.

HelloWorld Controller에서 추가된 부분을 보면 String이 아니라 JAVA Bean 형태로 데이터를 반환시키고 있는데,

스프링 프레임워크에서는 자바 Bean을 JSON 형태로 변환해서 반환해준다.

크롬과 Postman에서 각각 새로 만든 경로인 hello-world-bean을 확인해봤더니 JSON 형태로 나오는 것을 확인 가능하다.

 

DispatcherServlet과 프로젝트 동작의 이해

Spring Boot 동작 원리

- application.yml 과 application.properties에 각종 설정을 해줄 수 있다.

- yml을 더 많이 사용하고 있다.

로깅 설정을 yml 파일에 추가해준다. 다시 실행시키면 로깅 설정을 해주기 전보다 결과 창에 더 많은 정보가 출력되는 것을 알수 있다.

 

DispatcherServlet이 가장 중요 -> '/'

- 어떤 정보나 메시지를 다른 곳으로 보내주는 것

- Request 를 하면 Dispatcher Servlet으로 전달을 하고 그 뒤에 Handler로 요청을 전달한다고 한다.

RestController 는 Spring4 부터 @RestController라는 어노테이션을 지원한다.

View(화면? 사용자에게 보여주는 페이지)를 갖지 않고 JSON이나 XML 포맷으로 반환한다.

Path Variable 사용

api url은 api 프로그램 간의 정해진 약속이다. 가변 변수를 url에 사용해볼 것이다.

 

실행 결과 먼저 보면 Keneth 라고 적어준 곳에 아무 단어나 적어줘도 그대로 출력되는 것을 알 수 있었다.

작성한 코드는 위와 같다. PathVariable이 변할 수 있는 변수를 지정하는 어노테이션이고, String.format으로 리턴 값을 줬다.

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

   @GetMapping(path = "/hello-world")
    public String helloWorld() {
       return "Hello World";
   }

    @GetMapping(path = "/hello-world-bean")
    public HelloWorldBean helloWorldBean() {
        return new HelloWorldBean("Hello World");
    }

    @GetMapping(path = "/hello-world-bean/path-variable/{name}")
    public HelloWorldBean helloWorldBean(@PathVariable String name) {
        return new HelloWorldBean(String.format("Hello World, %s",name));
    }
}

위의 코드는 HelloWorldController.java 코드이다.

 

꿀팁

크롬 웹스토어에서 확장 프로그램인 JSON Viewer를 설치해주면 아래와 같이 JSON을 예쁘게 볼 수 있게 된다.