fetch api
21631 ワード
必要に応じてサーバにネットワークリクエストを送信し、新しい情報を受信できるようにします.
「ASynchronous JavaScript And XML、非同期JavaScript、XML」という用語を聞いたことがあるかもしれません.AJAXはサーバに非同期で追加情報を取得させる技術です!
3種類で
👌プロジェクトの進行中にajaxを使用して処理する必要があります.
最近はjqueryよりバニラjsでjsの練習が好きだそうです
vanillajsで実現することにしました!!
逆に、okステータスが
通常、
ソースMDN:https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch
返されたオブジェクトは、API呼び出しに成功したときに
生成されたHeaderは、プロパティを追加、削除、クエリーできます.
次の方法があります.
プロジェクト進行中、springsecurity POSTを申請する際に、フロントでcsrfコインを一緒に渡すべき方法を見つけました!
方法は簡単です!
1.htmlファイルhead部分に以下の fetchでは、ヘッダ部分に対応するcsrfトークン値を得ることができる.
何か変なところや修正が必要なところがあったらコメントをお願いします!
注意:
https://developer.mozilla.org/ko/docs/Web/API/Fetch_API
https://velog.io/@sham/Fetch%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80#%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D
https://velog.io/@prayme/Fetch-API#post-%EC%9A%94%EC%B2%AD%ED%95%98%EA%B8%B0
「ASynchronous JavaScript And XML、非同期JavaScript、XML」という用語を聞いたことがあるかもしれません.AJAXはサーバに非同期で追加情報を取得させる技術です!
ajaxタイプ
XHR
jQuery
fetch
jQuery
とfetch
を使用したことがありますが、XHR
を使用したことはありません...パス.jQuery
とfetch
が一番役に立つみたい!!👌プロジェクトの進行中にajaxを使用して処理する必要があります.
最近はjqueryよりバニラjsでjsの練習が好きだそうです
vanillajsで実現することにしました!!
fetchとjqueryの違い!
fetch()
から返されたPromise
オブジェクトはHTTP error
状態を返さない!HTTP Status Code
返却404または500も同様である.逆に、okステータスが
false
のresolve
に戻り、ネットワーク障害またはリクエストが完了していない場合はreject
に戻ります.通常、
fetch
はビスケットを送信または受信しません.サイトがユーザー・セッションを維持する必要がある場合、許可されていないリクエストが発生します!!クッキーを転送するには、認証オプションを設定する必要があります!ソースMDN:https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch
fetchデフォルト構文(GET)
// 일반적인 GET요청 시 작성하는 문법이다.
fetch('http://example.com/movies.json')
.then(response => response.json())
.then(data => console.log(data)); //자바스크립트 객체로 변환한다!
.catch(error => console.log(error));
fetch()
関数は、1番目のパラメータをURL、2番目のパラメータをオプションオブジェクトとして、Promise
タイプのオブジェクトを返します!返されたオブジェクトは、API呼び出しに成功したときに
.then
で解析オブジェクトを返し、失敗したときに.catch
で拒否オブジェクトを返します.fetchデフォルト構文(POST)
fetch("http://example.com/movies.json/post", {
method: "POST", // GET도 넣을 수는 있지만 안넣어도 상관없다. default는 get
headers: {
"Content-Type": "application/json", // json형식의 값을 넘겨줌을 header에 명시
},
body: JSON.stringify({ //javascript 객체를 json객체로 변환한다.
title: "Test",
body: "I am testing!",
userId: 1,
}),
})
.then((response) => response.json())
.then((data) => console.log(data))
ヘッダーはnewを生成できます!let myHeaders = new Headers();
を生成することができる.生成されたHeaderは、プロパティを追加、削除、クエリーできます.
次の方法があります.
append()
, delete()
, entries()
, forEach()
, get()
, has()
, keys()
, set()
, values()
, getAll()
新しいタイトルを作成して挿入
let myHeaders = new Headers();
myHeaders.append('Content-Type', 'text/xml');
myHeaders.get('Content-Type')
fetch("http://example.com/movies.json/post", {
method: "POST", // GET도 넣을 수는 있지만 안넣어도 상관없다. default는 get
headers: myHeaders,
body: JSON.stringify({ //javascript 객체를 json객체로 변환한다.
title: "Test",
body: "I am testing!",
userId: 1,
}),
})
.then((response) => response.json())
.then((data) => console.log(data))
fetchデフォルト構文(PUT)
fetch("http://example.com/movies.json/put", {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Test",
body: "I am testing!",
userId: 1,
}),
})
.then((response) => response.json())
.then((data) => console.log(data))
方法はPUTができる以外、POSTとあまり変わらない!fetchデフォルト構文(DELETE)
fetch("http://example.com/movies.json/post1", {
method: "DELETE",
})
.then((response) => response.json())
.then((data) => console.log(data))
送信するデータがなく、bodyやheaderがありません!⁉csrfトークン送信
プロジェクト進行中、springsecurity POSTを申請する際に、フロントでcsrfコインを一緒に渡すべき方法を見つけました!
方法は簡単です!
1.htmlファイルhead部分に以下の
_csrf
値を含むmetaラベルを配置します! <head>
<meta id="_csrf" name="_csrf" content="{{_csrf.token}}"/>
<meta id="_csrf_header" name="_csrf_header" content="{{_csrf.headerName}}"/>
</head>
上の例ではspringtemplateひげを使用しています.内容には{}が含まれています. //방법 1
const header = document.querySelector('meta[name="_csrf_header"]').content;
const token = document.querySelector('meta[name="_csrf"]').content;
fetch("/test/user", {
method: "POST",
headers: {
'header': header,
"Content-Type": "application/json"
'X-CSRF-Token': token // header에 X-CSRF-Token부분에 토큰값이 들어가 정상적으로 POST값이 넘어가는 것을 볼 수 있다!
},
body: JSON.stringify(postData)
})
//방법2
fetch("/test/user", {
method: "POST",
headers: {
'header': document.querySelector('meta[name="_csrf"]').content,
"Content-Type": "application/json"
'X-CSRF-Token': document.querySelector('meta[name="_csrf_header"]').content;
// 바로 X-CSRF-Token에 값을 주는 법!
},
body: JSON.stringify(postData)
})
上のコードを完成すれば、正常にコインを渡すことができます!⭐何か変なところや修正が必要なところがあったらコメントをお願いします!
注意:
https://developer.mozilla.org/ko/docs/Web/API/Fetch_API
https://velog.io/@sham/Fetch%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80#%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D
https://velog.io/@prayme/Fetch-API#post-%EC%9A%94%EC%B2%AD%ED%95%98%EA%B8%B0
Reference
この問題について(fetch api), 我々は、より多くの情報をここで見つけました https://velog.io/@ybj1227/fetch-apiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol