spring boot REST API Web 프로젝트 (1) - 환경구성 및 HelloWorld 출력 테스트

2021. 8. 1. 10:00·스프링/스프링부트 RestAPI 프로젝트

스프링 부트 REST API WEB 프로젝트

깃헙 링크

https://github.com/choiwoonsik/springboot_RestApi_App_Project/tree/main/restApiSpringBootApp

수행 목록

  1. 환경구성 및 helloworld 출력
  2. H2 DB 연동
  3. Swagger API 문서 연동
  4. REST API 설계
  5. RestControllerAdvice를 이용한 통합 예외 처리
  6. Entity - DTO 분리
  7. MessageSource를 이용해 예외 메시지 다국화
  8. JPA Aduting을 이용해 객체 생성시간/수정시간 적용
  9. 스프링 시큐리티 + Jwt를 이용해서 인증 및 권한 체크
  10. 스프링 시큐리티 AuthenticationEntryPoint, AccessDenied로 인증 및 인가 예외처리
  11. Jwt AccessToken + RefreshToken으로 보안성과 사용자 편의성 고도화하기
  12. JUnit Test (단위 테스트)
  13. JUnit Test (통합 테스트)
  14. OAuth 2.0 정리
  15. OAuth 2.0 카카오 로그인 part.1 Authorization code + Token 발급
  16. OAuth 2.0 카카오 로그인 part.2 토큰으로 회원 가입 / 로그인
  17. OAuth 2.0 카카오 로그인 테스트 검증
  18. 환경별 설정을 위해서profile 분리하기 

환경구성

  • h2 + mysql + lombok + gadle + freemaker

디렉토리 구조

HelloWorld 찍어보기

  • response body로 출력
    @GetMapping("/helloWorld/string")
    @ResponseBody
    public String helloWorldString() {
        return "hello";
    }
  • Hello class를 사용해서 출력
    @GetMapping("/helloWorld/json")
    @ResponseBody
    public Hello helloWorldJson() {
        Hello hello = new Hello();
        hello.setMessage("Hello");
        return hello;
    }
---
    @Getter
    @Setter
    public static class Hello {
        private String message;
    }
  • helloWorld.ftl (view)파일을 이용해서 출력
    @GetMapping("/helloWorld/page")
    public String HelloWorldPage() {
        return "helloWorld";
    }

application.yml 작성 - freemkaer를 사용하므로 그에 맞게 작성

spring:
  freemarker:
    template-loader-path: classpath:/templates
    suffix: .ftl
  • 출력결과

3가지 방법을 사용해서 브라우저에 hello, hello world를 출력해보았다.

 

제각기 다른 URL로 Requeset가 들어오면 DispatcherServlet에 의해 HandlerMapping을 거쳐서 Controller로 보내지고 table에서 @Controller로 등록된 메소드들과 URL의 매핑관계를 확인해서 해당 요청에 대해 처리를 하게 된다.

 

각 URL에 맞는 메소드는 적절히 처리를 하는데 @ResponseBody가 달려있는 메소드는 return 하는 문자열 or 객체를 바로 반환하게 된다.

 

그렇지 않다면 반환한 문자열에 대해서 ViewResolver가 prefix에는 classpath를 suffix에는 확장자명(.ftl)을 붙여서 변환을 해준다. 그럼 View에서 해당 위치의 일치하는 viewTemplate 파일을 찾아서 반환하게 된다. 

반응형
저작자표시 (새창열림)

'스프링 > 스프링부트 RestAPI 프로젝트' 카테고리의 다른 글

spring boot REST API Web 프로젝트 (6) - Entity와 DTO의 분리 (Controller 수정)  (0) 2021.08.11
spring boot REST API Web 프로젝트 (5) - 예외처리를 위한 @ExceptionHandler, @ControllerAdvice 적용  (0) 2021.08.09
spring boot REST API Web 프로젝트 (4) - Http 메소드를 기준으로 API 설계 (Controller, Service)  (0) 2021.08.07
spring boot REST API Web 프로젝트 (3) - API 관리를 위한 Swagger 적용  (0) 2021.08.05
spring boot REST API Web 프로젝트 (2) - h2 연동, SpringDataJPA 사용  (0) 2021.08.03
'스프링/스프링부트 RestAPI 프로젝트' 카테고리의 다른 글
  • spring boot REST API Web 프로젝트 (5) - 예외처리를 위한 @ExceptionHandler, @ControllerAdvice 적용
  • spring boot REST API Web 프로젝트 (4) - Http 메소드를 기준으로 API 설계 (Controller, Service)
  • spring boot REST API Web 프로젝트 (3) - API 관리를 위한 Swagger 적용
  • spring boot REST API Web 프로젝트 (2) - h2 연동, SpringDataJPA 사용
구름뭉치
구름뭉치
구름의 개발일기장
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (283)
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (28)
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (6)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부다페스트
    mx master s3 for mac
    키보드 손목 받침대
    동유럽
    마우스 패드
    크로아티아
    마우스
    류블라냐
    레이저
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
spring boot REST API Web 프로젝트 (1) - 환경구성 및 HelloWorld 출력 테스트
상단으로

티스토리툴바