본문 바로가기
  • 개발자를 꿈꾸는 중
실습/Spring-boot + JPA + H2

React에 데이터 받아오기

by 느보리 2022. 8. 16.
반응형

port : http://localhost:3000/

path= "/"

 

사진과 같이 h2 에서 데이터를 받아보자

데이터를 받아올 때에는 fetch 또는 axios를 사용할 수 있는데 여기서는 fetch를 사용해본다.

# 전체 코드

const Home = () => {

  const [books, setBooks] = useState([]);
  
//함수 실행시 최초 한번 실행되는 것
  useEffect(() => {
    fetch('http://localhost:8091/book', {
      method: 'GET',
    })
      .then((res) => res.json())
      .then((res) => {
        console.log(1, res);
        setBooks(res);
      }); //비동기 함수
  }, []);
  
    return (
    <div>
      <Container>
        <h1>책 리스트 보기</h1>
        {books.map((book) => (
          <BookItem book={book} key={book.id} />
        ))}
      </Container>
    </div>
  );
};
 

# useEffect() 부분

외워야 할것은 fetch().then().then()

//함수 실행시 최초 한번 실행되는 것
  useEffect(() => {
    fetch('http://localhost:8091/book', {
      method: 'GET',
    })
      .then((res) => res.json())
      .then((res) => {
        console.log(1, res);
        setBooks(res);
      }); //비동기 함수
  }, []);

fetch()안에는 데이터 요청 url을 적는다. 두번째  인자에는 Object가 들어갈 수 있다. 지금은 Get 요청이라 추가해줬지만 get은 default 값이라 이 경우에는 생략 가능하다.

 

첫번째 then() 안에는 promise가 들어간다. 이 말은 예를 들어 아직 돈은 없지만 나중에 돈을 넣어준다 약속하고 임시로 카드를 주는 것이다. 데이터가 들어오기 전까지 뭘 하느냐, 비동기 함수니까 아래로 넘어가서 BookItem을 그려준다. 그 후에 데이터가 오면 뿌려준다.

(res) => res.json() :  요청받은 데이터를 JSON으로 바꾼다는 뜻이다

두번째 then()에는 데이터를 set 해준다.

 

 

오류:

CORS policy : 

외부에서 자바스크립트 요청이 오는 것을 막는 정책

 

spring으로 돌아가서 해당 매핑이 사용된 메서드에 아래의 어노테이션 추가

@CrossOrigin

 

 

반응형

'실습 > Spring-boot + JPA + H2' 카테고리의 다른 글

MVC1, MVC2란?  (0) 2022.09.18