유저가 데이터달라고 요청을 하면 데이터를 보내주는 간단한 프로그램
서버에 데이터를 요청할 때는 정확한 규격에 맞춰서 요청해야하는데
어떤 데이터인지 (URL 형식으로)
어떤 방법으로 요청할지 (GET or POST)
잘 기재해야 데이터를 보내준다.
데이터를 가져올 때는 보통 GET 고르면 되고
데이터를 서버로 보낼 때는 POST 고르면 됨.
GET요청을 날리고 싶으면 가장 쉬운 방법은 브라우저 주소창.
POST요청을 날리고 싶으면
<form action="요청할url" method="post">
태그 이용.
그럼 폼이 전송되었을 때 POST요청을 날려쥼.
근데 GET, POST 요청을 저렇게 날리면 단점이,, 브라우저가 새로고침된다.
서버에 GET, POST 요청을 할 때
새로고침 없이 데이터를 주고받을 수 있게 도와주는
간단한 브라우저 기능을 AJAX라고 한다.
AJAX로 GET/POST요청하려면 방법 3개 중 택1 ㄲ.
XMLHttpRequest라는 옛날 문법 쓰기
fetch() 라는 최신 문법 쓰기
axios 같은 외부 라이브러리 쓰기
난 axios 쓸 거니까, axios 다운받고 ㄱ ㄱ
npm install axios
버튼누르면 서버로 ajax 요청을 해보쟈.
import axios from 'axios'
function App(){
return (
<button onClick={()=>{
axios.get('url')
.then((result)=>{
console.log(result.data)
})
.catch(()=>{
console.log('실패함')
})
}}>버튼</button>
)
}
axios를 쓰려면 상단에서 import해오고
axios.get(URL) 이러면 그 URL로 GET요청이 됨.
데이터 가져온 결과는 결과.data 안에 들어있.
그래서 위의 버튼 누르면 서버에서 가져온 데이터가 콘솔창에 출력된다.
axios.post('URL', {name : 'kim'})
Promise.all( [axios.get('URL1'), axios.get('URL2')] )
하지만, object/array 자료에 따옴표를 쳐놓아 문자자료로 바꾸면 됨.
"{"name" : "kim"}"
이걸 JSON 이라고 한다.
JSON은 문자 취급을 받기 때문에 서버와 자유롭게 주고받을 수 있.
그래서 실제로 결과.data 출력해보면 따옴표쳐진 JSON이 나와야하는데
axios 라이브러리는 JSON -> object/array 변환작업을 자동으로 해줘서
출력해보면 object/array가 나온다.
fetch는 그런거 안해줘서 json변경 코드 작성해야됨.
fetch('URL')
.then(결과 => 결과.json())
.then((결과) => { console.log(결과) } )