SpringBoot로 개발하는 RESTful Service

뚜우웅이·2024년 8월 23일

Spring Boot

  • 스프링 기반의 단독 실행 가능한 어플리케이션을 개발하기 위한 플랫폼
  • 스프링 프레임워크를 이용한 어플리케이션 개발에는 많은 설정이 필요한데, Spring Boot를 사용하면 최소한의 설정만으로 플랫폼과 서드파티 라이브러리를 모두 사용할 수 있음
  • Spring Boot의 가장 큰 특징 중 하나는 스프링 프레임워크 실행에 필요한 많은 API들을 Spring Boot에 기본 설정되어 있는 starter라는 컴포넌트에서 쉽게 사용
  • IOC: 개발자가 아니라 컨테이너에 의해서 Instance들을 생성되고 관리되는 방식.

사용자 관리 API

시나리오

  • 사용자 관리 API
  • 사용자 작성하는 블로그 글

관계

  • 사용자와 포스트와의 관계 -> 1:N

기능

  • 조회

    • 사용자 목록 조회

      • REST API : /users
      • HTTP Method : GET
    • 사용자 상세 조회

      • REST API : /users/{id}
      • HTTP Method : GET
    • 사용자 포스트 목록 조회

      • REST API : /users/{id}/posts
      • HTTP Method : GET
    • 사용자 포스트 상세 조회

      • REST API : /users/{id}/posts/{post_id}
      • HTTP Method : GET
  • 생성

    • 새로운 사용자 생성
      • REST API : /users
      • HTTP Method : POST
    • 사용자 포스트 생성
      • REST API : /users/{id}/posts
      • HTTP Method : POST
  • 삭제

    • 사용자 삭제
      • REST API : /users/{id}
      • HTTP Method : DELETE

Spring Boot 프로젝트 생성

롬복 설정


Enable annotation processing 체크

DevTools 설정


Build project autiomaically 체크

기본 인코딩 UTF-8 설정

스프링 설정 파일

application.properties 삭제 후 application.yaml 생성
application.yaml

server:
  port: 8088

RestController 추가

HelloWorldController 생성

  • GET 방식의 메소드 사용
  • URI : /hello-world (URI는 사용자에 의해 호출되는 end-point)
@RestController
public class HelloWorldController {

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

http://localhost:8088/hello-world 접속 시

Bean 추가

HelloWorldBean 빈을 반환하는 helloWorldBean 메소드 생성
자바빈 형태로 값을 반환할 경우 json 형식으로 반환이 됨
HelloWorldController

    // HelloworldBean 형태의 자바 빈을 반환하는 메소드
    @GetMapping("/hello-world-bean")
    public HelloWorldBean helloWorldBean() {
        return new HelloWorldBean("Hello World");
    }

HelloWorldBean 생성

@Data
@AllArgsConstructor
@NoArgsConstructor
public class HelloWorldBean {

    private String message;
}

SpringBoot의 동작 원리

  • 사용자 정보가 DispatcherServlet에 전달 -> DispatcherServlet이 이 정보를 Handler Mapping / Controller에 전달 -> Controller가 처리된 결과값을 Model 형태로 DispatcherServlet에 전달 -> ViewResolver가 사용자에게 보여주고자 하는 포맷으로 페이지 생성 -> 페이지 값에 모델을 포함시켜서 전달

  • View를 갖지 않는 REST Data를 반환하는 서비스의 경우, View 형태의 페이지를 생성할 필요없이 사용자의 요청을 Json 포맷으로 전달하면 됨

API URL 변수 지정

  • API URL은 정해진 형태로 사용자로부터 호출되어야 함 (API는 프로그램 간의 약속이기 때문)
  • ex) URL : http://localhost:8080/books
    URI는 가변변수를 사용하여 지정할 수 있음
    ex) URI : http://localhost:8080/books/1, URL : http://localhost:8080/books/123
  • Path Variable : 동일한 패턴의 가변데이터를 가진 URI를 만들어 이러한 가변 데이터를 클라이언트가 사용할 때, 이 변수를 지칭함.

HelloWorldController

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

http://localhost:8088/hello-world-bean/path-variable/aaa 접속

profile
공부하는 초보 개발자

0개의 댓글