기본은 Promise then 방식. async await 방식은 하단에 기술.
fetch native javascript |
axios vue.js 패키지와 별도로 설치, npm install axios |
// import 문 불필요 fetch(url[, options]) // 프라미스 1차 return .then(response => { // 다음에 있는 then 이 사용할 값을 return return response.json(); // text(). 프라미스 2차 return }) .then(data => { // response.json() 을 data 에 담아서 처리 }) .catch(error => { // .then(null, error => { ..... } 에 해당 }); options 내용은 아래 참조. .then(....).catch(.....).then(.....).catch(.....) 가능 |
import axios from 'axios'; axios(config) .then(response => { ... response.data ... }) .catch(error => { ... }); config 내용은 아래 참조. axios.request(config) 가능 axios.head(url[, config]) 가능 axios.options(url[, config]) 가능 |
{ method: 'GET', } // 1건 또는 다건 조회 | { url: '...', method: 'get' } axios.get(url[, config]) 가능 |
{ method: 'POST', // 1건 또는 다건 추가(등록) headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(JsonObject), // 웹은 문자열로 전송 } |
{ url: '...', method: 'post', data: JsonObject // JSON.stringify() 불필요 } axios.post(url[, data[, config]]) 가능 axios.postForm(url[, data[, config]]) 가능 |
{ method: 'PUT', // 1건의 모든 내용 수정. url 에 uniqueKey 포함 headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(JsonObject), // 웹은 문자열로 전송 } |
{ url: '...', // 1건의 모든 내용 수정. url 에 uniqueKey 포함 method: 'put', data: JsonObject // JSON.stringify() 불필요 } axios.put(url[, data[, config]]) 가능 axios.putForm(url[, data[, config]]) 가능 |
{ method: 'PATCH', // 1건의 일부 내용 수정. url 에 uniqueKey 포함 headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(JsonObject), // 웹은 문자열로 전송 } |
{ url: '...', // 1건의 일부 내용 수정. url 에 uniqueKey 포함 method: 'patch', data: JsonObject // JSON.stringify() 불필요 } axios.patch(url[, data[, config]]) 가능 axios.patchForm(url[, data[, config]]) 가능 |
{ method: 'DELETE', // 1건 삭제. url 에 uniqueKey 포함 } |
{ url: '...', // 1건 삭제. url 에 uniqueKey 포함 method: 'delete', } axios.delete(url[, config]) 가능 |
const data = async () => { // try ~ catch 필요 try { const response = await fetch(url); const result = await response.json(); // promise 에서 then 을 2회 사용한 것처럼, await 도 2번 사용 } catch(error) { } }; |
const data = async () => { // try ~ catch 필요 try { const response = await axios.get(url); ... response.data ... } catch(error) { } }; |
fetch('.....')
.then(res => {
if (!response.ok) return null; // 200 이 아니면 null 처리. 200~299 까지 true
const type = res.headers.get('Content-Type'); // 헤더에 쿠키값도..
// for(const [name, value] of res.headers) { ..... }
if (type != 'application/json') { // 서버에서 전달받은 데이타가 json 인 경우
throw new TypeError(`Type error, now ${type}`);
}
return res.json(); // 다음 then 에 json 데이타 전달
})
.then(data => {
..... // 서버에서 전달받은 데이타 처리
})
.catch(e => {
// e 를 찍어 볼 것
if (e instanceof NetworkError) {
.....
} else if (e2 instanceof TypeError) {
.....
} else {
.....
}
});
'Local Oriented > Vue.js' 카테고리의 다른 글
Vue 상태관리 Pinia, Options API VS Composition API (0) | 2024.11.29 |
---|---|
Vue, Options API VS Composition API (1) | 2024.11.25 |
lit-html 에서 readonly, checked, disabled, selected 설정 (0) | 2024.10.17 |
Vue3 + Typescript + script setup (5) | 2024.10.07 |
'Vue + Vite' 에서의 이미지 사용 요령 (2) | 2024.09.25 |