본문 바로가기
STUDY/react.js

[React] 서버와 통신하려면, ajax

by 히컵 2024. 8. 16.

 

 

🌱 들어가기 전에

서버란?

유저가 데이터를 요청하면 데이터를 보내주는 간단한 프로그램이다.

서버 개발을 한다는 것은 A 데이터를 요청하면 A 데이터를 보내주세요 라고 코드를 짜는 것이다.

 

서버에 데이터를 요청할 때는 정확한 규격에 맞춰서 요청해야 한다.

1. 어떤 데이터인지 (URL 형식으로)

2. 어떤 방법으로 요청할지 (GET or POST)

  • GET : 데이터를 가지고 올 때
  • POST : 데이터를 보낼 때

 

GET/POST 요청하는 법

GET 요청을 날리는 가장 쉬운 방법은 브라우저 주소창이다.

URL을 적으면 그곳으로 GET 요청을 날려 준다.

 

POST 요청을 날리고 싶으면 <form action="요청할 url" method="post"> 태그를 이용하면 된다.

그러면 폼이 전송되었을 때 POST 요청을 날려 준다.

 

그런데 GET, POST 요청을 이렇게 날리면 브라우저가 새로고침 된다는 단점이 있다.

 

 

 


 

 

AJAX란?

서버에 GET, POST 요청을 할 때 새로고침 없이 데이터를 주고받을 수 있게 도와주는 간단한 브라우저 기능을 말한다.

 

AJAX로 GET/POST 요청하는 방법

  1. XMLHttpRequest라는 옛날 문법 사용
  2. fetch()라는 최신 문법 사용
  3. axios 같은 외부 라이브러리 사용

 

axios 라이브러리 사용하기

설치

npm install axios

 

터미널을 열어 설치 명령어를 입력해 준다.

AJAX 요청하는 법 - GET

import axios from 'axios'

1. 상단에 axios를 import 한다.

axios.get('URL')

2. 작성한 URL로 GET 요청이 된다.

 

axios.get('URL').then((변수) => {
	console.log(변수.data)
});

3. 데이터 가져온 결과는 변수.data 안에 들어있다. 

  • GET 요청의 결과는 변수에 들어가 있다.
  • 요청해서 받은 결과의 데이터만 사용하고 싶다면 변수.data
axios.get('URL')
.then((변수) => {
	console.log(변수.data)
})
.catch( () => {
	//실패했을 때 실행할 코드
});

4. 요청 실패했을 때 실행할 코드는 .catch() 안에 작성한다.

 

AJAX 요청하는 법 - POST

axios.post('URL', 데이터)
-----
axios.post('URL', {name: 'kim'}}

이렇게 실행하면 서버로 데이터가 전송된다.

완료시 특정 코드 실행하고 싶으면 .then() 뒤에 붙이면 된다.

 

동시에 AJAX 요청 여러개 날리려면

Promise.all( [axios.get('URL1'), axios.get('URL2')] )

URL1, URL2로 GET 요청을 동시에 해 준다.

둘 다 완료시 특정 코드를 실행하고 싶으면 .then()을 뒤에 붙이면 된다.

 

 

 

원래는 서버와 문자 자료만 주고받을 수 있다.

object, array는 주고받지 못한다.

object, array를 주고받고 싶다면 따옴표를 사용하면 된다.

"{"name" : "kim"}" 

이런 것을 JSON이라고 한다.

JSON은 문자 취급을 받기 때문에 서버와 자유롭게 주고받을 수 있다.

 

object, array 자료가 담긴 변수.data를 출력해 보면 따옴표쳐진 JSON이 나와야 하는데, axios 라이브러리는 JSON → object/array 변환 작업을 자동으로 해 줘서 출력해 보면 object/array가 출력된다.

 

fetch('URL')
.then(결과 => 결과.json()) // JSON → array/object 변환 
.then((결과) => { console.log(결과) } )

자바스크립트 문법인 fetch()를 이용해도 GET/POST 요청이 가능한데 JSON → object/array 변환 작업을 직접 바꾸는 변환 과정이 필요하다. 

 

 

 

 

 

 

* 이 포스팅은 코딩애플 강의를 토대로 작성하였습니다.