Fetchの使い方とデータMock
9193 ワード
fetchはajaxの代わりにデータを取得/コミットする技術であり、一部の高級ブラウザではすでにwindowが可能である.fetchを使いました.jQueryを使うよりajaxは軽量で(これだけしかできません)、promiseをサポートしており、現在のプログラミング習慣に合っています.
インストール
fetchの使い方
パラメータ:urlは取得するリソースを表し、urlまたはRequestオブジェクトの値がある可能性があります.
init:オプション、オブジェクト、パラメータ method:使用を要求するメソッドgetまたはpost headers:リクエストヘッダ情報、オブジェクト body:要求されたbody情報:Blob、BufferSource、FormData、URLSearchParams、またはUSVstringオブジェクトである可能性があります.注意GETまたはHEADメソッドのリクエストにはbody情報は含まれません. mode:cors、no-cors、same-originなどの要求モードは、デフォルトではno-corsです.このモードでは、CDNからのスクリプト、他のドメインからのピクチャ、および他のドメイン間リソースが許可されますが、まず、要求されたmethodはHEAD、GET、またはPOSTのみであるという前提条件があります.また、ServiceWorkersがこれらのリクエストをブロックした場合、これら以外のHeaderプロパティを任意に追加または変更することはできません.第三に、JSはResponseオブジェクトの属性にアクセスできません.これにより、ドメイン間でのServiceWorkersのセキュリティとプライバシー情報の漏洩の問題が保証されます.corsモードはドメイン間リクエストを許可し、same-originモードはドメイン間リクエストに対してerrorを返し、すべてのリクエストが同源ポリシーを遵守することを保証します. credentials:‘include’//ドメイン間でcookieを持つことができることを示す(fetchドメイン間要求はデフォルトではcookieを持たないので、手動でこのパラメータを指定する必要がある) cache:要求されたcacheモード:default,no-store,reload,no-cache,force-cache,or only-if-cached.
戻り値:Promise、resolve時にResponseオブジェクトが返されます.
getの基本的な使用
まず依存プラグインを導入
fetch()メソッドはデータを要求し、promiseオブジェクトを返し、promiseの構文構造を使用することができます.
なお、上記の2つの用法では、res.text()とres.json()だけが異なり、この2つの方法は、返されるResponseデータを文字列またはjsonフォーマットに変換することである
postの基本使用
fetchがデータをコミットした後も、返される結果はpromiseオブジェクトであり、getメソッドと同じなので、処理方法も同じです.
抽象postとget
データを取得するたびに、上のように多くのコードが書かれているので、冗長すぎます.getとpostを2つの方法に分けて抽象化し、2つのjsファイルに分けることができます.
get.js
post.js
なお、
この2つの方法は抽象的で,他のコンポーネントから呼び出すと簡単になる.
データモジュール
インストールは、
アナログダイナミックインタフェース
つまり、自分で1つのwebフレームワークを使って、既定のインタフェースとデータ構造の要求に従って、自分でバックエンドインタフェースの機能をシミュレートして、フロントエンドのプロジェクトを順調に走ることができます.この方式は新しく開発されたプロジェクトに適用され,バックエンドとフロントエンドが同時に開発される.
シミュレーションインタフェースのコードを
注意:package.jsonでは、次のコードを追加し、
Webpack-dev-serverを使用するエージェント
koaインタフェースのポートは3000で、私たちのプロジェクトのインタフェースは8080で、ドメインをまたいでいるのではないでしょうか.--デフォルトでは、ドメイン間であることは間違いありません.Webpack-dev-serverがエージェントの転送を行う必要があります.構成コードは./webpack.config.js中
インストール
npm install whatwg-fetch --save
、インストールできます.古いバージョンのブラウザと互換性を持つために、npm install es6-promise --save
をインストールする必要があります.fetchの使い方
fetch(url,init).then(function(response) { } )
パラメータ:urlは取得するリソースを表し、urlまたはRequestオブジェクトの値がある可能性があります.
init:オプション、オブジェクト、パラメータ
headers: {
"Content-Type": "application/json"
},
戻り値:Promise、resolve時にResponseオブジェクトが返されます.
getの基本的な使用
まず依存プラグインを導入
import 'whatwg-fetch'
import 'es6-promise'
var result = fetch('/api/1', {
credentials: 'include',
headers: {
'Accept': 'application/json, text/plain, */*'
}
});
fetch()メソッドはデータを要求し、promiseオブジェクトを返し、promiseの構文構造を使用することができます.
result.then(res=>{
return res.text()
}).then(text=>{
console.log(text)
})
result.then(res=>{
return res.json()
}).then(json=>{
console.log(json)
})
なお、上記の2つの用法では、res.text()とres.json()だけが異なり、この2つの方法は、返されるResponseデータを文字列またはjsonフォーマットに変換することである
postの基本使用
import 'whatwg-fetch'
import 'es6-promise'
var result = fetch(url,{
method:'post',
credentials: 'include',
headers:{
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: "a=100&b=200"
})
fetchがデータをコミットした後も、返される結果はpromiseオブジェクトであり、getメソッドと同じなので、処理方法も同じです.
抽象postとget
データを取得するたびに、上のように多くのコードが書かれているので、冗長すぎます.getとpostを2つの方法に分けて抽象化し、2つのjsファイルに分けることができます.
get.js
import "whatwg-fetch"
import "es6-promise"
export function get(url){
var result = fetch(url,{
credentials:"include",
headers:{
'Accept':'application/json,text/plain,*/*'
}
});
return result;
}
post.js
import "whatwg-fetch"
import "es6-promise"
// key1=val1&key2=val2&key3=val3
function obj2params(obj){
var result = "";
var item;
for(item in obj){
result += '&'+ item + '=' + encodeURIComponent(obj[item]);
}
// result &
if(result){
result = result.slice(1);
}
return result;
}
//
export function post(url,paramsObj){
var result = fetch(url,{
method:'POST',
credentials:'include',
headers:{
'Accept':'appliaction/json,text/plain,*/*',
'Content-Type':'application/x-www-form-urlencoded'
},
body:obj2params(paramsObj)
});
return result;
}
なお、
post.js
ではパラメータを処理していますが、body:「a=100&b=200」というパラメータフォーマットが要求されていますが、私たちが普段jsで最も多く使用しているのはJSONフォーマットのデータなので、回転する必要があります.この2つの方法は抽象的で,他のコンポーネントから呼び出すと簡単になる.
データモジュール
インストールは、
koa
を使用してバックエンドインタフェースのシミュレーションを行うため、koaおよび関連するプラグインnpm install koa koa-body koa-router --save-dev
をインストールする必要があります.ここでは-save-devを使用します.開発中にkoaを使用するだけで、プロジェクトがリリースされた後にkoaは使用されません.リリース後のプロジェクトでは、koaに基づいて書かれたインタフェースではなく、バックエンドエンジニアが開発したオンラインインタフェースを使用しています.アナログダイナミックインタフェース
つまり、自分で1つのwebフレームワークを使って、既定のインタフェースとデータ構造の要求に従って、自分でバックエンドインタフェースの機能をシミュレートして、フロントエンドのプロジェクトを順調に走ることができます.この方式は新しく開発されたプロジェクトに適用され,バックエンドとフロントエンドが同時に開発される.
シミュレーションインタフェースのコードを
./mock
ディレクトリに書きます.インタフェースファイルは./mock/server.js
です(本当のプロジェクトを開発するときは、複数の異なるモジュールに分けられます).注意:package.jsonでは、次のコードを追加し、
npm run mock
でシミュレーションインタフェースサービスを開始する必要があります."scripts": { "mock": "node --harmony ./mock/server.js", },
Webpack-dev-serverを使用するエージェント
koaインタフェースのポートは3000で、私たちのプロジェクトのインタフェースは8080で、ドメインをまたいでいるのではないでしょうか.--デフォルトでは、ドメイン間であることは間違いありません.Webpack-dev-serverがエージェントの転送を行う必要があります.構成コードは./webpack.config.js中
devServer: {
proxy: {
// `/api` http , localhost:3000 , koa mock 。
// koa ./mock , npm run mock
'/api': {
target: 'http://localhost:3000',
secure: false
}
},
contentBase: "./public", //
colors: true, //
historyApiFallback: true, //
inline: true, //
hot: true // HotModuleReplacementPlugin
}