코더 장군
강아지코더
코더 장군
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • 프론트엔드 (24)
      • react (9)
      • html5 * css3 (1)
      • Javascript (10)
    • 개발일기 (36)
      • 알고리즘 (27)
      • 블록체인 (3)
      • mongoDB (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 일기#심리상담
  • 백준
  • 비공개#일기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
코더 장군

강아지코더

AXIOS를 통한 서버연결
프론트엔드/react

AXIOS를 통한 서버연결

2021. 12. 12. 01:35

Axios란?

Axios는 node.js와 브라우저를 위한 Promise 기반 HTTP 클라이언트 입니다. 그것은 동형 입니다(동일한 코드베이스로 브라우저와 node.js에서 실행할 수 있습니다). 서버 사이드에서는 네이티브 node.js의 http 모듈을 사용하고, 클라이언트(브라우저)에서는 XMLHttpRequests를 사용합니다. - 정식문서 

 

이번 항해에서 백엔드와 협업으로 미니프로젝트를 진행 했습니다. 서로 언어가 다르다 보니깐 서로 오해도 있었고 힘든 점도 많았지만 그래도 서로 부족한 점을 보완하면서 진행했습니다. axios에 대해서 많은 걸 배울수 있었고 instance를 제작하고 interceptors로 결과값 과 에러를 처리하는 방법을 사용해 봤습니다. 

 

베이직 axios 코드 

import axios from 'axios'

// 지정된 ID를 가진 유저에 대한 요청
axios.get('/user?ID=12345')
  .then(function (response) {
    // 성공 핸들링
    console.log(response);
  })
  .catch(function (error) {
    // 에러 핸들링
    console.log(error);
  })
  .then(function () {
    // 항상 실행되는 영역
  });

// 선택적으로 위의 요청은 다음과 같이 수행될 수 있습니다.
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // 항상 실행되는 영역
  });  

// async/await 사용을 원한다면, 함수 외부에 `async` 키워드를 추가하세요.
async function getUser() {
  try {
    const response = await axios.get('/user?ID=12345');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

 

 - instance로 axios를 가지고 관리되는 코드 

api / instance.js

import axios from "axios";
import { getCookie } from "./Cookie";
const USER_TOKEN = getCookie("Authorization");

const instance = axios.create({
  timeou: 1000,
  headers: {
  // 브라우저 쿠키에 저장된 토큰을 가져와서 명칭과 함께 header에 저장해서 전송합니다.
    Authorization: USER_TOKEN,
  // 추가적인 정보를 가지고 저장합니다.
    "content-type": "application/json;charset=UTF-8",
    accept: "application/json",
  },
});
// 도메인 설정 
instance.defaults.baseURL = "연결 할 백엔드 퍼블릭 도메인";

//interceptors를 POST요청 가지고 결과 값을 캐치해서 return 합니다.
instance.interceptors.request.use(
  config => {
    return config;
  },
  error => {
    console.log(error);
    return Promise.reject(error);
  }
);

//interceptors를 GET요청 가지고 결과 값을 캐치해서 return 합니다.
instance.interceptors.response.use(
  response => {
    const res = response.data;
    return res;
  },
  error => {
    console.log(error);
    return Promise.reject(error);
  }
);

export default instance;

 

 - instance로 관리되는 코드

/ api / todoCRUD.js 

import instance from "./instance";

export function PostAddList(Id, Data) {
  return instance({
    method: "POST",
    url: `/api/${Id}/detail/todolist`,
    data: Data,
  });
}
export function PutFixList(cardId, Data) {
  return instance({
    method: "PUT",
    url: `/api/${cardId}/detail/update`,
    data: Data,
  });
}
export function DelectList(cardId, textId) {
  return instance({
    method: "DELETE",
    url: `/api/${cardId}/detail/delete/${textId}`,
  });
}
export function LoadList() {
  return instance({
    method: "GET",
    url: `/api/cards/`,
  });
}

 

'프론트엔드 > react' 카테고리의 다른 글

[React] 컴포넌트 렌더링 이후 effect 수행하기  (0) 2022.01.24
moment를 적용 하면서  (0) 2022.01.12
디자인 패턴이란 무엇인가?  (0) 2021.11.29
REDUX 란? 상태관리 프로그램이란?  (0) 2021.11.29
리액트 라이프사이클의 이해  (0) 2021.11.28
    '프론트엔드/react' 카테고리의 다른 글
    • [React] 컴포넌트 렌더링 이후 effect 수행하기
    • moment를 적용 하면서
    • 디자인 패턴이란 무엇인가?
    • REDUX 란? 상태관리 프로그램이란?
    코더 장군
    코더 장군
    강아지 키우고 있는 소소한 개발자 성장기를 쓰는 일기장입니다

    티스토리툴바