uniapp が axios を使用してリクエストできない問題の解決策: まず、ルート ディレクトリに新しい [axios.js] ファイルを作成し、そのファイル内に新しい axios を設定します。次に、このアダプターを使用して、axios の数を設定します。リクエストを再開始する時間と各再リクエスト間の時間。
このチュートリアルの動作環境: Windows7 システム、uni-app2.5.1 バージョンこの方法は、すべてのブランドのコンピューターに適しています。
推奨 (無料): uni-app 開発チュートリアル
Uniapp では、axios を使用して問題を解決することはできません。リクエストの問題 方法:
ルートディレクトリに新しいaxios.jsファイルを作成し、そのファイルに新しいaxiosを設定します
import axios from "axios"; const service = axios.create({ withCredentials: true, crossDomain: true, baseURL: '***', timeout: 6000 })
ルートディレクトリにlibフォルダを作成し、このフォルダー内に、uniapp に基づいて axios アダプテーションを構成する、adapter.js ファイルを作成します。このアダプターをスローすることを忘れないでください
import settle from "axios/lib/core/settle" import buildURL from "axios/lib/helpers/buildURL" /* 格式化路径 */ const URLFormat = function (baseURL, url) { return url.startsWith("http") ? url : baseURL } /* axios适配器配置 */ const adapter = function (config) { return new Promise((resolve, reject) => { uni.request({ method: config.method.toUpperCase(), url: buildURL(URLFormat(config.baseURL, config.url), config.params, config.paramsSerializer), header: config.headers, data: config.data, dataType: config.dataType, responseType: config.responseType, sslVerify: config.sslVerify, complete: function complete(response) { response = { data: response.data, status: response.statusCode, errMsg: response.errMsg, header: response.header, config: config }; settle(resolve, reject, response); } }) }) } export default adapter;
ルート ディレクトリの axios.js ファイルで、このアダプターを使用し、設定します再開始リクエスト 各再リクエストの回数と間隔
import adapter from "./lib/adapter" service.defaults.adapter = adapter; service.defaults.retry = 5; // 设置请求次数 service.defaults.retryDelay = 1000;// 重新请求时间间隔
リクエストの完了後にインターセプタを設定します。応答ヘッダーのステータス コードが 200 の場合は成功を意味し、リクエストで取得したデータを返却しますが、それ以外の場合はエラーリクエストとみなされ、Promiseを返却する必要があります。失敗したリクエストを処理するために、ライブラリに axiosError.js を作成します。
service.interceptors.response.use(res => { if (res.status == 200) { return res; } else { return Promise.reject(res); } }, err => axiosError(err, service))
axiosError.js は、axios インターセプターと新しく作成された axios によってインターセプトされたエラーを渡す必要があります。このエラー処理ページはディストリビューターとしてのみ機能します。応答ヘッダーのステータスに基づいて続行できます。ハンドルエラー。未処理のエラーは使用中に処理され、401 エラー コードを処理するために Promise.reject
// 处理401错误代码 import Error401 from "../handlers/401Error"; export default function (err, axios) { const errStatus = err.response.status; if (errStatus == 401) { return Error401(err); // 401没有权限,重新请求设置token } else { return Promise.reject(err); } }
が返されます。リクエストが失敗し、応答ヘッダーのステータス コードが 401 の場合、私には次の権限がありませんリクエストを行います。プロジェクトに応じて処理できます。トークンを運ぶ必要があるため、401 はトークンが運ばれていない、または無効であることを意味します。リクエスト時にトークンを渡す必要はありません。Axios は自動的にトークンを使用し、401 が発生した場合は再度リクエストを実行します。ルート ディレクトリに handlers フォルダーを作成し、その中に 401 エラーを処理するための 401Error.js を作成します。
ここでは Vuex が使用されていますが、トークンの取得、トークンの設定、トークンのメソッドがすべて Vuex に配置されているため、Vuex を導入する必要があります。 ! ! store.dispatch("getToken") を使用してトークンを取得し、そのトークンをリクエスト ヘッダーに設定します。 Authorization
import interceptorsError from "../lib/interceptorsError"; import store from 'store/index' /* 需要传入axios错误配置 */ export default function (err, axios) { const config = err.config;// axios请求配置 store.dispatch("getToken").then(function () { config.headers["Authorization"] = store.state.cnrToken.cnr_token; }); err.config = config; return interceptorsError(axios, config); }
すべての準備ができたら、再度リクエストを行う必要があります。このメソッドにはリクエストの構成が必要ですが、前のリクエストの構成を渡すだけで済みます。
export default function (axios, config) { // 如果配置不存在或未设置重试选项,reject if (!config || !config.retry) return Promise.reject(err); // 设置变量以跟踪重试计数 config.__retryCount = config.__retryCount || 0; // 如果重试次数大于最大重试次数,reject if (config.__retryCount >= config.retry) { return Promise.reject(err); } // 每重试一次记录一次重试次数 config.__retryCount += 1; // 重试间隔时间 const backoff = new Promise(function (resolve) { setTimeout(function () { resolve(); }, config.retryDelay || 1000); }); return backoff.then(function () { return axios(config); }); }
これは Vuex での私のコードです
/* * @Author: UpYou * @Date: 2020-09-25 16:30:13 * @LastEditTime: 2020-09-25 21:32:56 * @Descripttion: token * */ const state = { cnr_token: '', POST_KEYS: { ...获取token需要的验证信息... } }; const mutations = { /* 设置token */ SET_CNRTOKEN(state, Payload) { if (Payload.startsWith("Bearer")) state.cnr_token = Payload; else state.cnr_token = "Bearer" + Payload; } } const actions = { /* 向服务器获取token */ getToken(context, args) { return new Promise(function (resolve, reject) { uni.request({ url: "token服务器地址", data: { ...context.state.POST_KEYS }, method: "get", async success(res) { await context.commit('SET_CNRTOKEN', res.data.access_token) await resolve(res.data) }, fail: reject }); }) } } export default { state, mutations, actions, }
以上がuniapp が axios を使用してリクエストできない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、モバイルプラットフォームとWebプラットフォームのデバッグ戦略について説明し、Android Studio、Xcode、Chrome Devtoolsなどのツールを強調し、OSとパフォーマンスの最適化全体で一貫した結果を得るためのテクニックについて説明します。

この記事では、Hbuilderx、Wechat開発者ツール、Chrome Devtoolsなどのツールに焦点を当てたUniapp開発のためのデバッグツールとベストプラクティスについて説明します。

この記事では、複数のプラットフォームにわたるUNIAPPアプリケーションのエンドツーエンドテストについて説明します。テストシナリオの定義、Appiumやサイプレスなどのツールの選択、環境のセットアップ、テストの書き込みと実行、結果の分析、インテグラートをカバーします

この記事では、ユニット、統合、機能、UI/UX、パフォーマンス、クロスプラットフォーム、セキュリティテストなど、UNIAPPアプリケーションのさまざまなテストタイプについて説明します。また、クロスプラットフォームの互換性を確保し、JESのようなツールを推奨しています

この記事では、過剰なグローバルデータの使用や非効率的なデータバインディングなど、UNIAPP開発における一般的なパフォーマンスアンチパターンについて説明し、これらの問題を特定して緩和してアプリのパフォーマンスを向上させる戦略を提供します。

この記事では、プロファイリングツールを使用して、Uniappのパフォーマンスボトルネックを識別および解決し、セットアップ、データ分析、最適化に焦点を当てています。

この記事では、Uniappでネットワーク要求を最適化するための戦略について説明し、遅延の削減、キャッシュの実装、および監視ツールを使用してアプリケーションのパフォーマンスを向上させることに焦点を当てています。

この記事では、圧縮、レスポンシブデザイン、怠zyなロード、キャッシング、およびWebP形式の使用を通じて、Webパフォーマンスを向上させるために、Uniappの画像の最適化について説明します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版
便利なJavaScript開発ツール
