非同期HTTP通信タイプ(ajax、fetch、axios)
13571 ワード
非同期HTTP通信タイプ(ajax、fetch、axios)
プロジェクトを実行するには、クライアントとサーバの間でデータ交換が必要です.
このため、HTTP通信を使用します.
HTTP通信のためにJSで使用されているAjax、Axios、fetchについて解説します
Ajax (Asynchronous JavaScript And XML)
Ajaxは、高速で動作する動的Webページを作成するための開発方法です.
Webページ全体を再ロードする必要がなく、Webページの一部を更新するだけです.
XMLHttpRequestオブジェクト
Ajaxの最もコアなコンポーネントはXMLHttpRequestオブジェクトです.
Ajaxでは、XMLHttpRequestオブジェクトを使用してWebブラウザでサーバとデータを交換します.
callback地獄が現れる可能性があります.var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { // 요청에 대한 콜백
if (xhr.readyState === xhr.DONE) { // 요청이 완료되면
if (xhr.status === 200 || xhr.status === 201) { console.log(xhr.responseText); } else { console.error(xhr.responseText); } } }; xhr.open('GET', 'https://~~URL'); // 메소드와 주소 설정 xhr.send(); // 요청 전송
JQuery Ajax
JクエリやAjaxを用いた開発を容易にするために,あらかじめ各種機能を含む開発環境をAjaxフレームワークと呼ぶ.
その中でも、現在最も広く使われているAjaxフレームワークがjQueryです.
XMLHttpRequestを使用する場合、不便と互換性のため、jQueryではAjaxを使用することが主流となっています.
jQueryを使用するには、cdnをインポートするか、APIファイルを直接ダウンロードする必要があります.$.ajax({
url: "/examples/media/request_ajax.php", // 클라이언트가 요청을 보낼 서버의 URL 주소
data: { name: "홍길동" }, // HTTP 요청과 함께 서버로 보낼 데이터
type: "GET", // HTTP 요청 방식(GET, POST)
dataType: "json" // 서버에서 보내줄 데이터의 타입
})
callback地獄が現れる可能性があります.$.ajax({
url: "~~",
success: function(data) {
const result = JSON.parse(data);
$.ajax({
url: `~~~`
success: function(data2){
const result2 = JSON.parse(data2);
$.ajax({
url: `~~`
success: function(data3){
......
}
})
}
})
},
})
fetch API
内蔵ライブラリなので、importは不要です.
XMLHttpRequest代替はfetch API->非同期httpリクエストの書き込みを容易にします.
fetch APIはPromiseベースです.->コペルは地獄を脱出した
これはReact Nativeのような頻繁な更新にも適用される.
デフォルトの応答結果は、応答オブジェクト->jsonまたはtextに変換する必要がある処理プロセスです.
古いブラウザではサポートされていません.
ネットワーク障害が発生した場合は、待機し続けます.
APIリクエストをキャンセルできません.fetch('주소', 설정객체).then(콜백).catch(콜백);
fetch(url, { headers: { "Content-Type": "application/json", }, });
Axios
AxiosはブラウザNodejs向けPromise APIを使用したHTTP非同期通信ライブラリ
AxiosもPromiseの基礎です.
クロスブラウザベースで、優れたブラウザ互換性を備えています.
JSONデータフォーマットに自動変換します.
リクエストをキャンセルし、タイムアウトを設定できます.
fetchには存在しない機能がもっとあります.
主にReactに使用されます.
XSRFハッカー技術は比較的安全です.
ライブラリをインストールする必要があります.const axios = require('axios')
// ID로 사용자 요청 axios
.get('url~~')
// 응답(성공)
.then(function(response) { console.log(response) })
// 응답(실패)
.catch(function(error) { console.log(error) })
// 응답(항상 실행)
.then(function() { // ... })
axiosfetchリクエストオブジェクトにurlがあります.リクエストオブジェクトにurlはありません.サードパーティ製ライブラリに設定する必要があるモダンブラウザバージョンなので、設定する必要はありません.XSRF保護を提供します.特に保護はありません.データ属性を使用します.bodyプロパティを使用します.データにはobjectが含まれます.bodyは文字列化されています.statusは200、statusTextは「OK」で成功しました.応答オブジェクトにokプロパティが含まれている場合は、成功します.JSONデータフォーマットを自動変換します.json()メソッドを使用する必要があります.リクエストをキャンセルしたり、一時停止したりできます.機能は存在しませんHTTPリクエストをブロックできますデフォルトではダウンロードの進行状況に対する基本的なサポートは提供されませんChrome 42+、Firefox 39+、Edge 14+、and Safari 10.1+またはそれ以上のバージョンをサポートします
コメントサイト
https://www.geeksforgeeks.org/difference-between-fetch-and-axios-js-for-making-http-requests/
https://www.zerocho.com/category/HTML&DOM/post/595b4bc97cafe885540c0c1c
https://kyun2da.dev/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/axios-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC/
Reference
この問題について(非同期HTTP通信タイプ(ajax、fetch、axios)), 我々は、より多くの情報をここで見つけました
https://velog.io/@yonghk423/비동기-HTTP-통신-종류ajax-fetchaxios
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { // 요청에 대한 콜백
if (xhr.readyState === xhr.DONE) { // 요청이 완료되면
if (xhr.status === 200 || xhr.status === 201) { console.log(xhr.responseText); } else { console.error(xhr.responseText); } } }; xhr.open('GET', 'https://~~URL'); // 메소드와 주소 설정 xhr.send(); // 요청 전송
$.ajax({
url: "/examples/media/request_ajax.php", // 클라이언트가 요청을 보낼 서버의 URL 주소
data: { name: "홍길동" }, // HTTP 요청과 함께 서버로 보낼 데이터
type: "GET", // HTTP 요청 방식(GET, POST)
dataType: "json" // 서버에서 보내줄 데이터의 타입
})
$.ajax({
url: "~~",
success: function(data) {
const result = JSON.parse(data);
$.ajax({
url: `~~~`
success: function(data2){
const result2 = JSON.parse(data2);
$.ajax({
url: `~~`
success: function(data3){
......
}
})
}
})
},
})
fetch('주소', 설정객체).then(콜백).catch(콜백);
fetch(url, { headers: { "Content-Type": "application/json", }, });
const axios = require('axios')
// ID로 사용자 요청 axios
.get('url~~')
// 응답(성공)
.then(function(response) { console.log(response) })
// 응답(실패)
.catch(function(error) { console.log(error) })
// 응답(항상 실행)
.then(function() { // ... })
Reference
この問題について(非同期HTTP通信タイプ(ajax、fetch、axios)), 我々は、より多くの情報をここで見つけました https://velog.io/@yonghk423/비동기-HTTP-통신-종류ajax-fetchaxiosテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol