[Spring boot + React] Rest Api 연동하기

2022. 8. 16. 17:03·Java/Spring Boot
목차
  1. 구조
  2. Spring 프로젝트 생성
  3. React 프로젝트 생성
  4. proxy 설정
  5. Backend
  6. Frontend
  7. 실행
728x90

구조

기본적으로 Spring 프로젝트 내부에 React가 들어가는 형식의 구조로 구성한다.

프로젝트 구조는 본인 편한 대로 구성해도 무방하다.


Spring 프로젝트 생성

start.spring.io

spring project 생성은 이곳으로

본인이 선호하는 java 버전과 프로젝트 내용을 선택하여 만들면 된다.

spring project

frontend를 제외하고 위와 같이 프로젝트가 생성이 된다.


React 프로젝트 생성

이제 react 프로젝트를 생성할 건데 위치는 원하는 곳에 넣어주면 된다.

나는 spring 프로젝트의 루트 디렉토리에 생성하였다.

npx create-react-app {project name}

{project name} 이라고 적은 곳에 원하는 app 이름을 작성하면 된다.

react project


proxy 설정

이상태로는 프론트와 백이 서로 다른 포트를 사용하여 CORS 문제가 발생한다.

CORS는 간단히 얘기하자면 도메인, 포트 등 다른 곳에서 서버로 접근을 할 시 브라우저가 차단하는 것을 말한다.

CORS란

 

CORS란 무엇인가? – Yunseok's Dev Blog

 

hannut91.github.io

이를 해결하기 위해 react에서 proxy를 설정해준다.

package.json

react 프로젝트에 package.json 파일에 들어가 proxy를 적용해준다.

이때 url은 본인이 만든 서버의 url과 포트를 적어주면 된다.


Backend

서버에서는 생성된 패키지에 controller 패키지를 추가하여 controller를 생성해준다.

backend

package com.example.board.Controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RestController
public class HelloController {

    @GetMapping("/api/hello")
    public List<String> Hello(){
        return Arrays.asList("서버서버", "뷰뷰");
    }
}

return 형식은 선호하는 대로 적으면 되지만 보통 rest api를 통해 프론트로 json 형태의 데이터를 넘겨주기 때문에 이런 식으로 데이터를 return 하는 것이 좋다.


Frontend

프론트에서는 useEffect와 fetch를 사용해 api에 접근하여 데이터를 받아온 뒤 출력하는 내용을 적는다.

import logo from './logo.svg';
import './App.css';
import React, {useState, useEffect} from "react";

function App() {
  const [msg, setMsg] = useState([]);
  useEffect(() => {
    fetch("/api/hello")
        .then((res) => {return res.json();})
        .then((data) => {setMsg(data);})
  }, []);
  return (
    <div className="App">
      <header className="App-header">
        <ul>
          {msg.map((content, idx) => <li key={`${idx} - ${content}`}>{content}</li>)}
        </ul>
      </header>
    </div>
  );
}

export default App;

실행

Spring 과 react를 각자 빌드한 뒤 react에 접속하면

web page

제대로 데이터를 받아오는 것을 확인할 수 있다. 끝.

저작자표시 비영리 (새창열림)

'Java > Spring Boot' 카테고리의 다른 글

Spring boot RestAPI 파일 다운로드  (0) 2023.02.10
Spring boot Controller Zip 압축 해제  (0) 2023.01.25
Spring boot H2 DB 설정  (0) 2022.11.10
Spring boot Scheduler 구현하기  (0) 2022.06.07
Spring boot 패키지 구조 및 내용  (0) 2022.02.22
  1. 구조
  2. Spring 프로젝트 생성
  3. React 프로젝트 생성
  4. proxy 설정
  5. Backend
  6. Frontend
  7. 실행
'Java/Spring Boot' 카테고리의 다른 글
  • Spring boot Controller Zip 압축 해제
  • Spring boot H2 DB 설정
  • Spring boot Scheduler 구현하기
  • Spring boot 패키지 구조 및 내용
요술공주밍키
요술공주밍키
조금씩이라도 꾸준히..
  • 요술공주밍키
    삽질의흔적
    요술공주밍키
  • 전체
    오늘
    어제
    • 분류 전체보기 (137)
      • Java (42)
        • Spring Boot (14)
        • Spring Boot 게시판 (14)
        • 공중화장실 찾기 (4)
        • 쇼핑몰 (8)
      • JavaScript (8)
        • NodeJS (2)
      • Python (5)
        • Django (4)
      • Server (10)
        • Docker (4)
        • K8S (0)
        • Jenkins (1)
      • 알고리즘 (22)
        • 프로그래머스 (17)
        • 백준 (5)
      • Etc (21)
        • 개발 팁 (1)
      • 일상 (27)
        • 독서 포스트 (25)
        • 회고록 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
요술공주밍키
[Spring boot + React] Rest Api 연동하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.