API를 비동기/Awit에서 'POST'로 가져오는 올바른 방법
API에 요청을 해야 하는 프로젝트를 진행하고 있습니다.를 작성하기 위한 적절한 형식은 무엇입니까?POST
Async/Awit에서 요청하시겠습니까?
예를 들어, 모든 디바이스의 목록을 가져오기 위한 페치입니다.이 요청을 어떻게 변경해야 합니까?POST
새로운 디바이스를 만들 수 있습니까?데이터 본문을 가진 헤더를 추가해야 한다는 것을 알았습니다.
getDevices = async () => {
const location = window.location.hostname;
const response = await fetch(
`http://${location}:9000/api/sensors/`
);
const data = await response.json();
if (response.status !== 200) throw Error(data.message);
return data;
};
실제로 코드를 다음과 같이 개선할 수 있습니다.
post를 실행하려면 fetch call 설정에 메서드를 추가합니다.
getDevices = async () => {
const location = window.location.hostname;
const settings = {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
}
};
try {
const fetchResponse = await fetch(`http://${location}:9000/api/sensors/`, settings);
const data = await fetchResponse.json();
return data;
} catch (e) {
return e;
}
}
다음으로 설정 예를 나타냅니다.
try {
const config = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
}
const response = await fetch(url, config)
//const json = await response.json()
if (response.ok) {
//return json
return response
} else {
//
}
} catch (error) {
//
}
2021년 답변: GET 및 POST Fetch api 요청을 작성하려면 비동기/대기 또는 공약을 사용합니다.
jsonplaceholder fake API를 사용하여 다음을 시연합니다.
비동기/대기 기능을 사용하여 API GET 요청을 가져옵니다.
const asyncGetCall = async () => {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts');
const data = await response.json();
// enter you logic when the fetch is successful
console.log(data);
} catch(error) {
// enter your logic for when there is an error (ex. error toast)
console.log(error)
}
}
asyncGetCall()
비동기/대기 기능을 사용하여 API POST 요청을 가져옵니다.
const asyncPostCall = async () => {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
// your expected POST request payload goes here
title: "My post title",
body: "My post content."
})
});
const data = await response.json();
// enter you logic when the fetch is successful
console.log(data);
} catch(error) {
// enter your logic for when there is an error (ex. error toast)
console.log(error)
}
}
asyncPostCall()
약속을 사용한 GET 요청:
fetch('https://jsonplaceholder.typicode.com/posts')
.then(res => res.json())
.then(data => {
// enter you logic when the fetch is successful
console.log(data)
})
.catch(error => {
// enter your logic for when there is an error (ex. error toast)
console.log(error)
})
Promise를 사용한 POST 요청:
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
// your expected POST request payload goes here
title: "My post title",
body: "My post content."
})
})
.then(res => res.json())
.then(data => {
// enter you logic when the fetch is successful
console.log(data)
})
.catch(error => {
// enter your logic for when there is an error (ex. error toast)
console.log(error)
})
Axios를 사용한 GET 요청:
const axiosGetCall = async () => {
try {
const { data } = await axios.get('https://jsonplaceholder.typicode.com/posts')
// enter you logic when the fetch is successful
console.log(`data: `, data)
} catch (error) {
// enter your logic for when there is an error (ex. error toast)
console.log(`error: `, error)
}
}
axiosGetCall()
Axios를 사용한 POST 요청:
const axiosPostCall = async () => {
try {
const { data } = await axios.post('https://jsonplaceholder.typicode.com/posts', {
// your expected POST request payload goes here
title: "My post title",
body: "My post content."
})
// enter you logic when the fetch is successful
console.log(`data: `, data)
} catch (error) {
// enter your logic for when there is an error (ex. error toast)
console.log(`error: `, error)
}
}
axiosPostCall()
분리하는 것을 잊지 마세요.async/await
그리고.then
다음은 예를 제시하겠습니다.
const addDevice = async (device) => {
const { hostname: location } = window.location;
const settings = {
method: 'POST',
body: JSON.stringify(device),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
}
const response = await fetch(`http://${location}:9000/api/sensors/`, settings);
if (!response.ok) throw Error(response.message);
try {
const data = await response.json();
return data;
} catch (err) {
throw err;
}
};
언급URL : https://stackoverflow.com/questions/50046841/proper-way-to-make-api-fetch-post-with-async-await
'programing' 카테고리의 다른 글
Angular를 사용하여 파일을 다운로드하려면 어떻게 해야 합니까?JS 또는 Javascript? (0) | 2023.02.28 |
---|---|
오류의 적절한 사용 (0) | 2023.02.28 |
url을 통해 json 데이터를 가져와 python(simplejson)에서 사용 (0) | 2023.02.28 |
WooCommerce - 후크에 의해 생성된HTML은 어디서 편집할 수 있습니까? (0) | 2023.02.28 |
json의 단일 키에 여러 값 저장 (0) | 2023.02.28 |