[React] express 서버와 연결하기

2022. 10. 7. 17:23·개발/React
728x90
반응형

1. /front 폴더에 react 설치

2. /backend 폴더에 서버를 설치

const express = require("express");
const app = express();


const server = app.listen(8000, () => {
  console.log("server start");
});

3. 데이터 주고 받기

(1) cors 보안정책

cors 보안정책 때문에 하나의 브라우저에서 다른 도메인/포트의 서버로 요청하면 에러가 나타난다.

프론트와 백 두개의 서버를 동시에 실행하려면 cors로 접근을 허용해 줘야 한다.

이와 같이 하는 이유는 해킹과 보안문제 때문이다. 누구나 접근할수 있다면 데이터 전송을 가로채 보안에 문제가 생김

const cors = require("cors");

const options = {
  origin: "http://localhost:3000",
};

app.use(express.json());
app.use(cors(options));

 

cors option origin 종류 예시

const options = {
  origin: "*", // 누가오든 요청 허용 : 보안을 풀어버리는 거임
  origin: true, // 들어오는 요청 도메인 / 포트가 자동으로 origin에 들어간다.
  origin: "도메인", // 실제로 서비스되는 도메인을 입력해줘서 해당 도메인만 접근할수 있게 허용한다.
  credential: boolean값, //(사용자 인증이 필요한 리소스를 접근 을 허용해줄지 안할지 쿠키같은거 등등)
};

 

(2) 클라이언트 미들웨어에서 데이터 보내기

await 로 데이터를 보내고 서버에서 받은 데이터가 user.data에 할당된다.

const login = (id, pw) => {
  return async (dispatch, getState) => {
    const user = await axios({
      method: "post",
      url: "http://localhost:8000/login",
      data: {
        id,
        pw,
      },
    });

    if (user.data) {
      dispatch({ type: "LOGIN", payload: { id, pw } });
    } else {
      alert("로그인 실패");
    }
  };
};

(3) 서버에서 데이터 받고 보내기

app.post("/login", async (req, res) => {
  let { id, pw } = req.body;
  const users = await user.findOne({
    where: { user_id: id, user_pw: pw },
  });

  if (users) {
    res.send(true);
  } else {
    res.send(false);
  }
});

 

 

 

728x90
반응형

'개발 > React' 카테고리의 다른 글

[React] Redux vs Recoil  (0) 2023.06.26
[React] i18next  (0) 2023.04.07
[React] middleware 쓰기(thunk)  (0) 2022.10.06
[React] 게시판만들기(Redux)  (0) 2022.10.04
[React] Redux  (2) 2022.10.04
'개발/React' 카테고리의 다른 글
  • [React] Redux vs Recoil
  • [React] i18next
  • [React] middleware 쓰기(thunk)
  • [React] 게시판만들기(Redux)
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ERC721
    node.js
    nodejs
    erc20
    html
    mysql
    30일챌린지
    CSS
    node
    React
    하이퍼레저
    도커
    프로그래머스
    go
    js
    컨테이너
    30일 챌린지
    명령어
    go언어
    블록체인
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[React] express 서버와 연결하기
상단으로

티스토리툴바