환경세팅
운영환경과 클라이언트-서버 아키텍처
- 운영환경(실제 서비스 환경)에서 프로젝트를 배포할 때, 클라이언트(고객, 브라우저)와 서버(주인, 스프링 부트)는 일반적으로 다른 컴퓨터, 서로 다른 네트워크에서 실행된다.
- 브라우저와 스프링부트 사이에서는 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>
- 둘 다 문자열로 데이터를 표현하기 때문에, 클라이언트와 서버 모두 이해하고 사용할 수 있다.
- 자바의 객체를 문자열로 변환하여 네트워크로 데이터를 주고받을 수 있도록 만든다.
'Spring Boot 프로젝트' 카테고리의 다른 글
Spring Boot 프로젝트 (11.11) - 프록시 (0) | 2024.11.11 |
---|---|
Spring Boot 프로젝트 (11.06) - Fly.io설치, 배포 (1) | 2024.11.08 |
Spring Boot 프로젝트 (11.06) - 도커 파일 생성, 도커 이미지 생성, 도커 컨테이너 생성 (4) | 2024.11.07 |
Spring Boot 프로젝트 (11.05) - Jackson, Lombok, Docker (3) | 2024.11.05 |
Spring Boot 프로젝트 (11.04) - CRUD, 람다식 (1) | 2024.11.05 |