본문 바로가기

Spring Boot 프로젝트

Spring Boot 프로젝트 (11.04) - surl_project

환경세팅

운영환경과 클라이언트-서버 아키텍처

  • 운영환경(실제 서비스 환경)에서 프로젝트를 배포할 때, 클라이언트(고객, 브라우저)와 서버(주인, 스프링 부트)는 일반적으로 다른 컴퓨터, 서로 다른 네트워크에서 실행된다.
  • 브라우저와 스프링부트 사이에서는 HTTP프로토콜을 통해 서로 통신하게 된다. HTTP는 웹에서 클라이언트와 서버 간의 데이터를 주고받는 방식 중 하나로, HTTP 요청(request)과 HTTP 응답(response)으로 이루어진다.

Spring Boot - 원격지원

  • Spring Boot의 기본 목적 중 하나는 고객의 요청에 대한 처리를 서버가 원격에서 수행하도록 하는 것
  • 고객(클라이언트)이 직접 서버로 와서 작업을 수행할 필요 없이, 어디서든지 인터넷을 통해 서버와 소통할 수 있다.

@Controller

  • Spring Boot의 Controller는 사용자(클라이언트)의 요청을 받아서 응답을 반환하는 역할
  • 컨트롤러는 클라이언트와의 소통을 담당하기 때문에 고객이 요청한 URL에 따라 적절한 로직을 실행하고 그 결과를 돌려주는 기능을 한다.

특정 메서드만 호출 가능하게 만들기

  • 모든 메서드를 외부(브라우저)에서 호출할 수 있도록 만드는 것은 보안 및 효율성 측면에서 좋지 않기 때문에, 일반적으로 컨트롤러 클래스 내에서 특정 메서드만 호출 가능하도록 설정한다.

@GetMapping("/경로") -> 특정 경로에 대한 GET 요청을 매핑하여 액션 메서드를 호출할 수 있도록 한다.

  • 액션 메서드는 클라이언트의 요청을 처리하고 응답을 반환

@ResponseBody -> 메서드의 반환 값을 HTTP 응답의 본문(body)으로 보내게 된다.

  • 클라이언트가 브라우저의 주소창에 특정 URL을 입력하고 엔터를 누르거나 F5를 눌러 페이지를 새로고침할 때마다, 해당 URL에 매핑된 액션 메서드가 실행된다.

 


 

데이터 표현과 통신 (JSON, XML)

클라이언트와 서버는 각각 다른 언어를 사용한다.

  • 클라이언트(브라우저)의 기본언어는 JavaScript이다.
  • 서버(Spring Boot)의 기본 언어는 Java이다.

이러한 차이로 직접적으로 자바의 데이터 타입(int, boolean, char 등)을 클라이언트와 주고받을 수 없다.

클라이언트와 서버가 공통적으로 이해할 수 있는 데이터 형식이 필요하다. 그 형식이 String(문자열)이다. 그러나, 복잡한 객체나 여러 데이터들을 문자열로만 표현하기에는 어렵다.

이때 사용되는 대표적인 방법이 JSON(JavaScript Object Notation)과 XML(eXtensible Markup Language)이다.

JSON : 데이터를 키-값 쌍으로 표현하며, 사람과 기계 모두 읽기 쉽게 설계된 형식

	"name": "ssa",
    "id": 1,
    "content": "JSON"

XML : 데이터를 태그로 감싸서 표현하는 방식

<todo>
    <id>1</id>
    <name>ssa</name>
    <content>XML</content>
</todo>
  • 둘 다 문자열로 데이터를 표현하기 때문에, 클라이언트와 서버 모두 이해하고 사용할 수 있다.
  • 자바의 객체를 문자열로 변환하여 네트워크로 데이터를 주고받을 수 있도록 만든다.