目次
バックグラウンド
プロセス
app.js
ホームページ WeChat アプレット ミニプログラム開発 ミニプログラムのリクエストカプセル化について(詳細な手順付き)

ミニプログラムのリクエストカプセル化について(詳細な手順付き)

Sep 11, 2021 pm 05:07 PM
request

バックグラウンド

アプレットのコードは以前は複雑だったので、新しいプロジェクトの開始時に WeChat のリクエストをカプセル化する予定でした。アプレット

プロセス

最初にプロセス全体について話しましょう:

1.appjs 入力したら、ユーザー情報を取得します。ログインしていない場合は、ログインします。デフォルトでは、エラー処理は行われません。

2. ユーザーは、操作を実行するには承認に同意する必要があります。承認に同意しない場合は、常に承認ページに移動します。

3. 承認ページで [承認] をクリックしてログインした後、ログイン インターフェイスを呼び出します。成功したら、承認を呼び出したページに戻ります。,

app.js

onLaunch# でユーザー情報を取得します##

appSelf = this;
        // 应用程序第一次进入,获取用户信息,不做任何错误处理
        userInfo().then( (res)=>{
            console.log(res);// 打印结果
            if (!res.code) {
                appSelf.globalData.userInfo = res
            }
        }).catch( (errMsg)=>{
            console.log(errMsg);// 错误提示信息
        });
ログイン後にコピー
httpUtils.js

リクエストのカプセル化

const request = function (path, method, data, header) {
    let user_id = "";
    let token = "";
    try {
        user_id = wx.getStorageSync(USER_ID_KEY);
        token = wx.getStorageSync(TOKEN_KEY);
    } catch (e) {}
    header = header || {};
    let cookie = [];
    cookie.push("USERID=" + user_id);
    cookie.push("TOKEN=" + token);
    cookie.push("device=" + 1);
    cookie.push("app_name=" + 1);
    cookie.push("app_version=" + ENV_VERSION);
    cookie.push("channel=" + 1);
    header.cookie = cookie.join("; ");
    return new Promise((resolve, reject) => {
        wx.request({//后台请求
            url: API_BASE_URL + path,
            header: header,
            method: method,
            data: data,
            success: function (res) {
                if (res.statusCode !== 200) {
                    reject(res.data)
                } else {
                    if (res.data.code === 20006) {
                        login().then( (res)=>{
                            resolve(res)
                        }).catch( (errMsg)=>{
                            reject(errMsg);
                        })
                    }
                    resolve(res.data)
                }
            },
            fail: function (res) {
                reject("not data");
            }
        });
    });
}
ログイン後にコピー

ログイン

const login = function () {
    try {
        wx.removeStorageSync(USER_ID_KEY)
        wx.removeStorageSync(TOKEN_KEY)
    } catch (e) {}
    return new Promise((resolve, reject) => {
        wx.login({
            success: res => {
                let code = res.code;
                // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
                wx.getUserInfo({
                    withCredentials: true,
                    success: res => {
                        let userInfo = res.userInfo;
                        let name = userInfo.nickName;
                        let avatar = userInfo.avatarUrl;
                        let sex = userInfo.gender;
                        let data = {
                            code: code,
                            encryptedData: res.encryptedData,
                            iv: res.iv,
                            name: name,
                            avatar: avatar,
                            sex: sex,
                            from: FROM,
                        };
                        request("/api/user/login/byWeChatApplet", "POST", data).then( (res)=>{
                            if (!res.code) {
                                try {
                                    wx.setStorageSync(USER_ID_KEY, res.user_id);
                                    wx.setStorageSync(TOKEN_KEY, res.token)
                                } catch (e) {
                                    reject(JSON.stringify(e));
                                }
                            }
                            resolve(res)
                        }).catch( (errMsg)=>{
                            reject(errMsg)
                        });
                    },
                    fail: function (res) {
                        console.log(res);

                        if (res.errMsg && res.errMsg.startsWith("getUserInfo:fail") && res.errMsg.search("unauthorized") != -1) {
                            // 跳转授权页面
                            wx.navigateTo({
                                url: '/pages/auth/auth'
                            })
                            return;
                        }
                        wx.getSetting({
                            success: (res) => {
                                if (!res.authSetting["scope.userInfo"]) {
                                    // 跳转授权页面
                                    wx.navigateTo({
                                        url: '/pages/auth/auth'
                                    })
                                }
                            }
                        });
                    }
                })
            }
        })
    });
};
ログイン後にコピー

auth.js

認可ページ js

Page({
    data: {
    },
    onLoad: function () {
        self = this;
    },

    auth: function (e) {
        console.log(app.globalData.userInfo);
        if (e.detail.userInfo) {
            login().then( (res)=>{
                console.log(res);// 打印结果
                if (res.code) {
                    // 接口错误
                    return
                }
                // 跳转回上一个页面
                wx.navigateBack()
            }).catch( (errMsg)=>{
                console.log(errMsg);// 错误提示信息
            });
        }
    },

});
ログイン後にコピー
プロジェクト アドレス

https://github.com/lmxdawn/wx...

a vue thinkphp5.1 によって構築されたバックエンド管理: https://github.com/lmxdawn/vu ...

デモ:

<br>ミニプログラムのリクエストカプセル化について(詳細な手順付き)

<br>
ログイン後にコピー

以上がミニプログラムのリクエストカプセル化について(詳細な手順付き)の詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPリクエストとはどういう意味ですか? PHPリクエストとはどういう意味ですか? Jul 07, 2021 pm 01:49 PM

request の中国語の意味は「要求」で、PHP のグローバル変数であり、「$_POST」、「$_GET」、「$_COOKIE」を含む配列です。 「$_REQUEST」変数は、POSTまたはGETで送信されたデータやCOOKIE情報を取得できます。

urllib.request.urlopen() 関数を使用して Python 3.x で GET リクエストを送信する方法 urllib.request.urlopen() 関数を使用して Python 3.x で GET リクエストを送信する方法 Jul 30, 2023 am 11:28 AM

Python3.x で urllib.request.urlopen() 関数を使用して GET リクエストを送信する方法 ネットワーク プログラミングでは、HTTP リクエストを送信してリモート サーバーからデータを取得する必要があることがよくあります。 Python では、urllib モジュールの urllib.request.urlopen() 関数を使用して、HTTP リクエストを送信し、サーバーから返される応答を取得できます。この記事では使い方を紹介します

Vue3 Axios インターセプターをリクエスト ファイルにカプセル化する方法 Vue3 Axios インターセプターをリクエスト ファイルにカプセル化する方法 May 19, 2023 am 11:49 AM

1. request.js という名前の新しいファイルを作成し、Axios をインポートします: importaxiosfrom'axios'; 2. request という名前の関数を作成してエクスポートします: これにより、request という名前の関数が作成され、それがエクスポートされます ベース URL を使用して新しい Axios インスタンスを設定します。ラップされた Axios インスタンスにタイムアウト設定を追加するには、Axios インスタンスの作成時にタイムアウト オプションを渡すことができます。 exportconstrequest=axios.create({baseURL:'https://example.

PHP の Request オブジェクトとは何ですか? PHP の Request オブジェクトとは何ですか? Feb 27, 2024 pm 09:06 PM

PHP の Request オブジェクトは、クライアントからサーバーに送信される HTTP リクエストを処理するために使用されるオブジェクトです。 Request オブジェクトを通じて、リクエストを処理して応答するために、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト パラメータなどのクライアントのリクエスト情報を取得できます。 PHP では、$_REQUEST、$_GET、$_POST などのグローバル変数を使用して、要求された情報を取得できますが、これらの変数はオブジェクトではなく配列です。リクエスト情報をより柔軟かつ便利に処理するために、次のことができます。

PHPにおけるリクエストとは PHPにおけるリクエストとは Jun 01, 2023 am 10:12 AM

PHP のリクエストはリクエストを指します。これは PHP のスーパー グローバル変数です。HTML フォームおよび URL のパラメータによって送信されたデータを収集するために使用されます。GET リクエストと POST リクエストから同時にデータを取得できます。$_request は連想配列。ここで、キーはフォーム フィールドの名前、値はフォーム フィールドの値です。 $_request 変数を使用する場合は、セキュリティの問題を回避するために、ユーザーが入力したデータを常に検証してフィルター処理する必要があります。

PHPにおけるリクエストの役割と重要性 PHPにおけるリクエストの役割と重要性 Feb 27, 2024 pm 12:54 PM

PHP におけるリクエストの役割と重要性 PHP プログラミングにおけるリクエストは、Web サーバーにリクエストを送信するためのメカニズムであり、Web 開発において重要な役割を果たします。リクエストは主に、フォームの送信、GET または POST リクエストなど、クライアントから送信されたデータを取得するために使用されます。リクエストを通じて、ユーザーが入力したデータを取得し、データを処理して応答することができます。この記事では、PHPにおけるリクエストの役割と重要性を紹介し、具体的なコード例を示します。

コンテキストを使用して Go でリクエスト パラメーターの検証を実装する方法 コンテキストを使用して Go でリクエスト パラメーターの検証を実装する方法 Jul 22, 2023 am 08:23 AM

コンテキストを使用して Go でリクエスト パラメーターの検証を実装する方法 はじめに: バックエンドの開発プロセスでは、パラメーターの正当性を確認するためにリクエスト パラメーターを検証する必要がよくあります。 Go 言語には、リクエストのコンテキスト情報を処理するためのコンテキスト パッケージが用意されており、その洗練されたデザインと簡単な使用法により、一般的に使用されるツールとなっています。この記事では、Go のコンテキスト パッケージを使用してリクエスト パラメーターの検証を実装する方法と、対応するコード例を紹介します。コンテキスト パッケージの概要 Go では、コンテキスト パッケージを使用して配信します。

urllib.request モジュールを使用して Python 3.x で HTTP リクエストを送信する方法 urllib.request モジュールを使用して Python 3.x で HTTP リクエストを送信する方法 Jul 30, 2023 am 11:21 AM

urllib.request モジュールを使用して Python3.x で HTTP リクエストを送信する方法. 実際の開発プロセスでは、サーバーと対話するために HTTP リクエストを送信する必要があることがよくあります。 Python は urllib.request モジュールを提供します。これは、URL リクエストを処理するための Python 標準ライブラリのモジュールの 1 つです。この記事では、urllib.request モジュールを使用して HTTP リクエストを送信する方法を学習します。

See all articles