서버와의 통신

양은지·2023년 4월 3일
0

React

목록 보기
15/27

server

  • 본 강의의 설명: 유저가 데이터를 받기를 정확한 규격에 맞게 요청했을 때, 데이터를 보내주는 프로그램
    - 어떤 데이터인지(URL 형식으로)
    - 어떤 방법으로 요청할 지(GET, POST): 데이터를 가져올 때는 GET, 데이터를 보낼 떄는 POST
  • 병행하는 네트워크 스터디에서는 네트워크에 연결된 컴퓨터인 호스트의 한 역할로 설명을 하고 있음

데이터 요청 방법 (1) - 브라우저 주소창

  • 브라우저 주소창에 URL을 작성하는 것도 데이터를 요청하는 방법 중에 하나이며(GET), 요청 시 서버가 html을 보내주어 브라우저에 페이지가 렌더링 되는 것이다
  • 단점은 매 요청 시마다 브라우저가 새로고침 된다

데이터 요청 방법 (2) - AJAX

  • 서버에 GET/POST 요청을 할 때 새로고침 없이 데이터를 주고 받을 수 있도록 해주는 브라우저 기능
  • AJAX로 GET/POST 요청하는 방법은 세 가지가 있다
    - XMLHttpRequest 문법 사용
    - fetch() 문법 사용
    - axios 같은 외부 라이브러리 사용

AJAX 요청 - axios get

import axios from 'axios';

function App() {
    return (
        <button onClick={()=>{
            axios.get('url').then((res) => {
                console.log(res);
            })
            .catch(()=>{
                console.log('failed');
            })
        }}>btn</button>
    )
}
  • 터미널에서 npm install axios 로 설치한다
  • axios.get('URL'): URL GET 요청(ex. https://~~~.com/data.json)
  • .then((res)=>{code}): GET 요청으로 가져온 데이터를 res 변수에 저장 후 코드를 실행
    - (참고) 실제 데이터 값을 사용할 경우에는 res.data를 사용해야 한다
  • .catch(()=>{code}): GET 요청이 실패했을 경우 코드를 실행

AJAX 요청 - 다중 axios get

Promise.all( [axios.get('URL1'), axios.get('URL2')] )
    .then((res)=>{code})
    .catch(()=>{code})
  • 2개 이상의 axios get 요청을 하기 위해서는 Promise.all([])을 사용할 수 있다
  • then, catch 문법을 붙일 수 있고, Promise.all 안의 모든 get 요청이 완료되었을 때만 then 구문이 동작한다

AJAX 요청 - axios post

axios.post('URL', {name: 'kim'})
    .then((res)=>{code})
    .catch(()=>{code})
  • axios post 요청은 위와 같이 사용할 수 있으며, 기입한 서버 URL로 {name: 'kim'} object를 전달한다

AJAX 요청 - fetch

fetch('URL')
    .then((res) => {res.json()})
    .then((res) => {})
  • fetch는 JS 기본 문법으로 마찬가지로 서버에 데이터 요청을 할 수 있다
  • 다만 fetch 를 사용할 때는 결과 데이터(res)를 json 변환해주어야 한다
profile
eunji yang

0개의 댓글