[자원 획득 API 비교] fetch와 axios의 4가지 차이점
24300 단어 JavaScriptfetchhttpaxiostech
비슷한 장서지만 주로 4가지가 달라 각각 해설한다.
1. 설치 방법
fetch는 브라우저의 표준 총서에서 설치하지 않고 사용할 수 있습니다.
다른 한편, axios는 설치가 필요합니다.다음 명령을 사용하여 가져올 수 있습니다.
yarn add axios
npm install axios
모듈을 가져와야 합니다.import axios from "axios"
2. HTTP 메소드 통신
HTTP 방법마다 통신을 호출하는 방법은fetch와 axios에서 다릅니다.
fetch를 통한 POST 통신
fetch에서 POST 통신을 할 때 2 파라미터에 추가
method:"POST"
가 필요합니다.[fetch] POST 통신
export default function Index () {
const onButtonClick = () => {
const params = {
method: "POST",
body: JSON.stringify({name: "しゅう"})
}
fetch("/api/user", params)
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
axios를 통한 POST 통신
한편, axios는 이 함수만 사용하면 POST 통신을 할 수 있는post 방법을 갖추고 있다.
또한 매개변수를 두 번째 매개변수로 전달하면 HTTP 요청 바디에 추가됩니다.따라서fetch처럼 JSON 데이터를 인코딩할 필요가 없기 때문에 간결한 코드가 된다.
[axios] JSON 데이터 가져오기
import axios from "axios";
export default function Index () {
const onButtonClick = () => {
axios.post("/api/user", {name: "しゅう"})
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
그나저나 포스트 외에 get,put,delete도 있기 때문에fetch보다 웹 API에 직관적으로 접근할 수 있다.3. JSON 데이터 획득 방법
세 번째는 JSON 데이터를 가져오는 방법입니다.
fetch의 JSON 데이터에 근거하여
fetch에서 반환한 JSON 데이터는 우선
response
에서 접수한 후 JSON을 추출해야 한다.[fetch] JSON 데이터의 획득
export default function Index () {
const onButtonClick = () => {
fetch("/api/user")
//レスポンスのボディーからJSONデータを取得
.then((response) => response.json())
.then((user) => alert(`名前:${user.name}`))
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
axios의 JSON 데이터 기반
한편, axios는
response.data
에서 JSON 데이터를 얻을 수 있다.[axios] JSON 데이터 가져오기
import axios from "axios";
export default function Index () {
const onButtonClick = () => {
axios.get("/api/user")
.then((response) => alert(`名前:${response.data.name}`))
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
4. 오류 처리
HTTP 상태가 404(Not Fund) 또는 500(Internal Server Error)을 수신할 때 동작이 다릅니다.
fetch의 404
fetch는 HTTP 상태 코드 404와 500을 받은 후에도 오류가 발생하지 않고 then 처리를 실행합니다.
따라서 다음 처리에서 URL이 존재하지 않고 404가 반환되더라도'성공했어!'라고 할 수 있다.라는 메시지를 남겼다.
[fetch] 404도 성공 메시지가 뜨네요.
export default function Index () {
const onButtonClick = () => {
fetch("/ABC")
.then(() => alert("成功しました!"))
.catch(() => alert("エラーです!"))
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
왜 404에서도 then 방법을 사용할 수 있을까?fetch의 역할은'응답을 받고 대답해 달라'는 것이기 때문이다.404와 500을 받으면 반응이 있으니 정상으로 판단합니다.따라서
resolve
, 운행then
방법.따라서fetch에서 정상적인 응답 여부(200)를 판정해야 한다.다음 소스는response입니다.ok(상태 코드 200~299의 범위)를 통해 판단
[fetch] 404의 경우 오류 메시지
export default function Index () {
const onButtonClick = () => {
fetch("/ABC")
.then((response) => {
//ステータスがOKの場合のみ成功メッセージを表示
response.ok ? alert("成功しました!"): alert("エラーです!");
})
.catch(() => alert("エラーです!"))
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
axios 404
한편, axios가 404나 500을 받으면 오류가 발생할 수 있습니다.많은 사람들에게 이것은 더욱 직관적이고 처리하기 쉽다.
[axios] 404에 오류 메시지 표시
import axios from "axios";
export default function Index () {
const onButtonClick = () => {
axios.get("/ABC")
.then(() => alert("成功しました!"))
.catch(() => alert("エラーです!"))
}
return (
<div>
<button onClick={onButtonClick}>押して!</button>
</div>
)
}
총결산
axios는 코드를 간결하게 쓸 수 있습니다.axios는 HTTP 요청 주체에서 JSON 데이터를 인코딩하지 않을 수 있습니다.매개 변수를 두 번째 매개 변수에 전달하기만 하면 된다.
axios는 더욱 직관적으로 쓴다.각 HTTP 메서드의 post 및 get 메서드를 준비합니다.
참고 자료
Reference
이 문제에 관하여([자원 획득 API 비교] fetch와 axios의 4가지 차이점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/syu/articles/9840082d1a6633텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)