ホームページ ウェブフロントエンド uni-app Uniapp でのリクエストと処理結果に関する関連知識の詳細な紹介

Uniapp でのリクエストと処理結果に関する関連知識の詳細な紹介

Apr 27, 2023 am 09:06 AM

モバイル インターネットの発展に伴い、モバイル アプリケーションの市場需要が増加しており、この需要に応えて、React Native や Flutter などのさまざまなクロスプラットフォーム フレームワークが登場しています。その中でも、Uniapp はクロスプラットフォーム アプリケーションの開発に使用できるフレームワークで、Android、iOS、Web、WeChat アプレット、Alipay アプレットなどの複数のプラットフォームを迅速に構築できます。

Uniapp では、リクエストの送信とリクエスト結果の処理がコア機能ですが、この記事では、Uniapp におけるリクエストとリクエスト結果の処理に関する関連知識を詳しく紹介します。

1. リクエストの送信

Uniapp でリクエストを送信するにはさまざまな方法がありますが、最も一般的な方法は uni.request メソッドを使用することです。

uni.request({
    url: 'http://www.example.com',
    data: {
        name: 'example'
    },
    header: {
        'content-type': 'application/json'
    },
    success: function (res) {
        console.log(res.data)
    }
});
ログイン後にコピー

このコードでは、uni.request はリクエストを送信するためのメソッドです。URL、データ、ヘッダー、成功などのパラメータを含むオブジェクトを渡す必要があります。ここで、URL はリクエスト アドレスを表します。 data は要求されたデータを表し、header は要求ヘッダーを表します。success は要求が成功した後のコールバック関数を表します。リクエストのプロセス中に、fail パラメータと complete パラメータを渡すこともできます。これらのパラメータは、それぞれリクエストの失敗とリクエスト終了後のコールバック関数を表します。

リクエストを送信するもう 1 つの方法は、カプセル化された uni.request メソッドを使用し、それを別の JS ファイルにカプセル化することです。

//request.js
import { getBaseUrl } from './config';

const req = (url, method, data) => {
    return new Promise((resolve, reject) => {
        uni.request({
            url: getBaseUrl() + url,
            method,
            data,
            header: {
                'content-type': 'application/json'
            },
            success: (res) => {
                resolve(res)
            },
            fail: (err) => {
                reject(err);
            }
        });
    });
}

export const post = (url, data) => {
    return req(url, 'POST', data);
}

export const get = (url, data) => {
    return req(url, 'GET', data);
}
ログイン後にコピー

このコードでは、req メソッドがカプセル化されており、url、メソッド、データの 3 つのパラメーターを渡し、Promise オブジェクトを返します。非同期操作は Promise オブジェクトを通じて実装され、成功した結果と失敗したリクエストは、解決メソッドと拒否メソッドに渡されます。同時に、get メソッドと post メソッドもカプセル化され、それぞれ get リクエストと post リクエストの送信を表します。使用方法は次のとおりです:

import { get, post } from './request';

get('/user', {id: 1}).then(res => {
    console.log(res.data);
});

post('/login', {username: 'example', password: 'example'}).then(res => {
    console.log(res.data);
});
ログイン後にコピー

2. リクエスト結果の処理

Uniapp リクエスト結果は通常、以下に示すような JSON オブジェクトになります。

{
    "code": 200,
    "message": "success",
    "data": {
        "username": "example",
        "age": 18
    }
}
ログイン後にコピー

このうち、code はステータス コード、message はメッセージ、data はリクエスト結果データを表します。

リクエストの結果を処理するときは、まずコードに基づいてリクエストが成功したかどうかを判断し、さまざまなステータス コードに基づいてリクエストを処理する必要があります。リクエストメソッドの成功コールバック関数内、またはカプセル化されたメソッド内で処理できます。

import { get } from './request';

get('/user', {id: 1}).then(res => {
    if(res.code === 200) {
        console.log(res.data);
    } else if(res.code === 401) {
        console.log('用户未登录');
    } else if(res.code === 404) {
        console.log('用户不存在');
    } else {
        console.log('请求失败');
    }
});
ログイン後にコピー

リクエスト結果を処理するもう 1 つの方法は、インターセプターを使用することです。インターセプタは、リクエストの送信前またはリクエストの応答後に、トークンの追加やデータのフィルタリングなど、リクエストに対して何らかの処理を実行できる関数です。 Uniapp でインターセプターを使用する方法は、リクエスト インターセプターとレスポンス インターセプターをカプセル化して、それぞれリクエスト前ロジックとリクエスト後ロジックを処理することです。

//request.js
import { getBaseUrl } from './config';

const requestInterceptors = (config) => {
    //添加token或其他逻辑
    return config;
}

const responseInterceptors = (response) => {
    const res = response.data;
    if(res.code === 200) {
        return res.data;
    } else {
        //根据code进行错误处理
        uni.showToast({
            title: res.message,
            icon: 'none'
        });
        return Promise.reject(res);
    }
}

const request = (options) => {
    const { url, method = 'GET', data } = options;
    const config = {
        url: getBaseUrl() + url,
        method,
        data,
        header: {
            'content-type': 'application/json'
        }
    }

    return new Promise((resolve, reject) => {
        uni.request({
            ...requestInterceptors(config),
            success: (response) => {
                if(response.statusCode == 200) {
                    resolve(responseInterceptors(response));
                } else {
                    reject(response)
                }
            },
            fail: (error) => {
                reject(error);
            }
        });
    })
}

export default request;

//config.js
export const getBaseUrl = () => {
    //返回请求地址
    return 'http://www.example.com';
}
ログイン後にコピー

このコードでは、requestInterceptors、responseInterceptors、リクエスト メソッドがカプセル化されており、その中にリクエスト インターセプターとレスポンス インターセプターがカプセル化されています。 requestInterceptors と responseInterceptors の機能は、それぞれリクエストの前後にリクエストを処理することです。 request メソッドはリクエストを送信するためのメソッドであり、使用方法は次のとおりです:

import request from './request';

request({
    url: '/user',
    method: 'get',
    data: {id: 1}
}).then(res => {
    console.log(res);
}).catch(err => {
    console.log(err);
});
ログイン後にコピー

最終的なプロダクト コードは最適化されたコードです:

//config.js
export const getBaseUrl = () => {
    //返回请求地址
    return 'http://www.example.com';
}

//request.js
import { getBaseUrl } from './config';

const requestInterceptors = (config) => {
    //添加token或其他逻辑
    return config;
}

const responseInterceptors = (response) => {
    const res = response.data;
    if(res.code === 200) {
        return res.data;
    } else {
        //根据code进行错误处理
        uni.showToast({
            title: res.message,
            icon: 'none'
        });
        return Promise.reject(res);
    }
}

const request = (options) => {
    const { url, method = 'GET', data } = options;
    const config = {
        url: getBaseUrl() + url,
        method,
        data,
        header: {
            'content-type': 'application/json'
        }
    }

    return new Promise((resolve, reject) => {
        uni.request({
            ...requestInterceptors(config),
            success: (response) => {
                if(response.statusCode == 200) {
                    resolve(responseInterceptors(response));
                } else {
                    reject(response)
                }
            },
            fail: (error) => {
                reject(error);
            }
        });
    })
}

export default request;

//api.js
import request from './request';

export const getUser = (id) => {
    return request({
        url: '/user',
        method: 'get',
        data: {id}
    });
}

//页面中使用
import { getUser } from './api';

getUser(1).then(res => {
    console.log(res);
}).catch(err => {
    console.log(err);
});
ログイン後にコピー

この記事では、リクエストと処理に関する関連知識を紹介しますUniapp での結果。リクエストの送信とリクエスト結果の処理のさまざまな方法、リクエストの前後処理にインターセプターを使用する方法が含まれます。クロスプラットフォーム アプリケーション開発に Uniapp を使用する開発者にとって、この知識を習得することは、開発効率とコード品質を向上させ、アプリケーションの安定性とユーザー エクスペリエンスを向上させるのに役立ちます。

以上がUniapp でのリクエストと処理結果に関する関連知識の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

UNI-APPでローカルストレージを処理するにはどうすればよいですか? UNI-APPでローカルストレージを処理するにはどうすればよいですか? Mar 11, 2025 pm 07:12 PM

この記事では、Uni-AppのローカルストレージAPI(uni.setstoragesync()、uni.getStoragesync()、およびそれらの非同期のカウンターパート)を詳しく説明し、説明キーの使用、データサイズの制限、JSONの解析の処理などのベストプラクティスを強調しています。 それはそのloを強調します

VuexまたはPiniaを使用してUni-Appで状態を管理するにはどうすればよいですか? VuexまたはPiniaを使用してUni-Appで状態を管理するにはどうすればよいですか? Mar 11, 2025 pm 07:08 PM

この記事では、UNI-APPの州管理についてVuexとPiniaを比較します。 それらの機能、実装、およびベストプラクティスを詳細に説明し、ピンアのシンプルさとvuexの構造を強調しています。 選択は、Pinia sutaを使用して、プロジェクトの複雑さに依存します

Uni-AppのジオロケーションAPIを使用するにはどうすればよいですか? Uni-AppのジオロケーションAPIを使用するにはどうすればよいですか? Mar 11, 2025 pm 07:14 PM

この記事では、Uni.getLocation()に焦点を当てたUni-AppのGeolocation APIを詳しく説明しています。 誤った座標系(GCJ02対WGS84)や許可の問題などの一般的な落とし穴に対処します。 読み取りと取り扱いを平均化することにより、位置の精度を向上させます

UNI-APPでAPIリクエストを行い、データを処理するにはどうすればよいですか? UNI-APPでAPIリクエストを行い、データを処理するにはどうすればよいですか? Mar 11, 2025 pm 07:09 PM

この記事では、uni.requestまたはaxiosを使用してUni-app内でAPIリクエストの作成と保護を詳しく説明しています。 JSON応答の処理、最高のセキュリティプラクティス(HTTPS、認証、入力検証)、トラブルシューティング障害(ネットワークの問題、CORS、S

Uni-Appのソーシャル共有APIを使用するにはどうすればよいですか? Uni-Appのソーシャル共有APIを使用するにはどうすればよいですか? Mar 13, 2025 pm 06:30 PM

この記事では、ソーシャル共有をUni.share APIを使用してUni-Appプロジェクトに統合し、WeChatやWeiboなどのプラットフォーム全体でセットアップ、構成、テストをカバーする方法を詳しく説明しています。

自動コンポーネント登録にUni-AppのEasyCom機能を使用するにはどうすればよいですか? 自動コンポーネント登録にUni-AppのEasyCom機能を使用するにはどうすればよいですか? Mar 11, 2025 pm 07:11 PM

この記事では、UNI-APPのEasyCom機能を説明し、コンポーネント登録を自動化します。 Autoscanやカスタムコンポーネントマッピングなどの構成の詳細は、ボイラープレートの削減、速度の向上、読みやすさの向上などの利点を強調しています。

Uni-APPでプレ前セッサー(SASS、LESS)を使用するにはどうすればよいですか? Uni-APPでプレ前セッサー(SASS、LESS)を使用するにはどうすればよいですか? Mar 18, 2025 pm 12:20 PM

記事では、UNI-APPでSASSおよびPREPROCESSORSを使用して、セットアップ、利点、および二重使用法を詳細に使用することについて説明します。主な焦点は構成と利点にあります。[159文字]

HTTPリクエストを作成するためにUni-AppのUni.Request APIを使用するにはどうすればよいですか? HTTPリクエストを作成するためにUni-AppのUni.Request APIを使用するにはどうすればよいですか? Mar 11, 2025 pm 07:13 PM

この記事では、HTTPリクエストを作成するためにUNI-APPのUni.Request APIを詳しく説明しています。 基本的な使用状況、高度なオプション(メソッド、ヘッダー、データ型)、堅牢なエラー処理手法(失敗コールバック、ステータスコードチェック)、およびAuthenticATとの統合をカバーしています

See all articles