The Origin:Peer Group:Study01

xddongx-hyeon2·2022년 3월 2일
0

spring_boot

목록 보기
8/11

HTTP(HyperText Transfer Protocol)

응답과 요청

  • 응용계층에 정의된 통신 규약
  • 서버와 클라이언트 간에 메시지를 전달하는 형식을 정의한 규약

요청

  • Request Line: Method, Path, Version
  • Request Headers: HTTP 요청에 대한 부수적인 데이터
  • Request Body: HTTP 요청에 관한 실제 데이터

응답

  • Status Line: 요청 처리에 대한 상태 표시 줄
  • Response Headers: HTTP 응답에 대한 부수적인 데이터
  • Response Body: 응답 데이터

Media Type

  • 인터넷 상에서 주고받는 데이터의 형식

  • application/Json:

  • multipart/form-data: file을 업로드할 때

JSON

  • 데이터를 주고받을 때 흔히 사용하는 형태
  • 속성(Attribute) - 값(Value)의 형태와 배열(Array)을 활용한다.

MVC & Controller & RestController

MVC

MVC(모델-뷰-컨트롤러)는 소프트웨어 디자인 패턴이다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고있다. 이러한 “관심사 분리”는 더나은 업무의 분리와 향상된 관리를 제공한다

Model

  • 데이터와 비즈니스 로직을 관리
  • 애플리케이션이 포함해야할 데이터가 무엇인지를 정의
  • Java Beans

View

  • 레이아웃과 화면을 처리
  • 애플리케이션의 데이터를 보여주는 방식을 정의
  • Thymeleaf 등 여러 Template Engine이 있음

Controller

  • View와 Model 사이의 인터페이스 역할
  • 애플리케이션 사용자의 입력에 대한 응답으로 Model 및 View를 업데이트하는 로직을 포함

참고


@Controller와 @RestContoller의 차이점

차이점: HTTP Response Body가 생성되는 방식

@Contoller

  • 전동적이 Spring MVC의 컨트롤러
  • View를 반환
  • @ResponseBody를 사용하면 View를 리턴하지 않고 Controller에서 직접 데이터 리턴 가능
  • @Controller가 Data를 반환하는 경우 @ResponseBody 어노테이션을 활용 → JSON형태로 데이터를 반환

@RestController

  • RESTful 웹 서비스의 컨트롤러
  • @RestController = @Copntroller + @ResponseBody
  • JSON/XML 타입의 HTTP 응답을 직접 리턴
  • 주용도로는 JSON 형태로 객체 데이터를 반환하는 것

    Controller에서 View를 반환하는 케이스 이외에 JSON Data를 반환해야되는 케이스에 @Controller + @ResponseBody를 함께 쓰는 번거로움을 해결하기 위해서 @RestController 탄생


참고


HTML Template

  • Static(정적) Contents: 이미 작성이 완료되어 변하지 않는 파일들, HTML, CSS, JS, Image
  • Dynamic(동적) Web Page: 서버에서 HTML 문서의 내용을 데이터에 따라 다르게 작성하여 제공되는 페이지
  • 템플릿 엔진
    • 동적 컨텐츠를 생성하는 방법
    • FreeMarker, Groovy, Thmeleaf, Mustache 등이 있다.

Thymeleaf

비교적 최근에 만들어진 템플릿 엔진이며 서버사이드 자바 템플릿 엔진의 한 종류

의존성 추가

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Controller

@Controller
public class SampleController {
    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("name", "dsunni");
        return "hello";
    }
}

Thymeleaf 사용

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 th:text="${name}">Name</h1>
</body>
</html>

참고

0개의 댓글