私はフェッチを使用してWebサービスを呼び出していますが、私はaxiosの助けを借りてできることと同じです。だから今私は混乱しています。私はどちらかにアクセスする必要がありますか?
それらはHTTPリクエストライブラリです...
私も同じ疑問を抱いてしまいましたが、この表 post で私はisomorphic-fetch
を使うようになりました。これはfetch
ですが、NodeJSで動作します。
FetchとAxiosは機能的に非常に似ていますが、より後方互換性のためにAxiosはよりうまく機能するようです(たとえば、IE 11ではfetchは機能しません、チェック this post )。
また、あなたがJSONリクエストを扱う場合、以下は私が遭遇したいくつかの違いです。
JSON投稿リクエストを取得します
let url = 'https://someurl.com';
let options = {
method: 'POST',
mode: 'cors',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
property_one: value_one,
property_two: value_two
})
};
let response = await fetch(url, options);
let responseOK = response && response.ok;
if (responseOK) {
let data = await response.json();
// do something with data
}
Axios JSON投稿リクエスト
let url = 'https://someurl.com';
let options = {
method: 'POST',
url: url,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
data: {
property_one: value_one,
property_two: value_two
}
};
let response = await axios(options);
let responseOK = response && response.status === 200 && response.statusText === 'OK';
if (responseOK) {
let data = await response.data;
// do something with data
}
そう:
お役に立てれば。
これについても興味がありました、あなたの質問をここで見つけて、それから有用であるかもしれないこの中型のポストを見つけました。フェッチはもう少し冗長で寛容ではないようです: https://medium.com/@shahata/why-i-wont-be-using-fetch-api-in-my-apps-6900e6c6fe78#.wxtu3qnte =
Axiosは、NPMを使用してReactプロジェクトに簡単にインストールできるスタンドアロンのサードパーティパッケージです。
あなたが言及した他のオプションはフェッチ機能です。 Axiosとは異なり、fetch()
はほとんどの最近のブラウザに組み込まれています。 fetchを使えば、サードパーティのパッケージをインストールする必要はありません。
だからあなた次第です、あなたがfetch()
を使って行って、あなたが何をしているのかわからないのならばめちゃくちゃになる可能性がありますOR Axiosを使ってください。
もう1つ大きな違い fetch APIとaxios APIの間
それに加えて...私は私のテストでさまざまなライブラリで遊んでいて、4xx要求のそれらの異なる取り扱いに気づいていました。この場合、私のテストでは400のレスポンスでjsonオブジェクトを返します。これが、3つの一般的なライブラリが応答を処理する方法です。
// request-promise-native
const body = request({ url: url, json: true })
const res = await t.throws(body);
console.log(res.error)
// node-fetch
const body = await fetch(url)
console.log(await body.json())
// Axios
const body = axios.get(url)
const res = await t.throws(body);
console.log(res.response.data)
request-promise-native
とaxios
は4xx応答をスローしますが、node-fetch
はスローしません。またfetch
は、JSON構文解析の約束を使用します。
Axiosの利点: