序文:
uni-appでのメソッドソートのリクエストバックグラウンドインターフェース。パーソナルパッケージバージョンと公式メソッド。
公式エントリー:
パッケージバージョン:以下のディレクトリを参照してください
1.インターフェイス情報が主に配置される新しいフォルダーAPIを作成します
login.jsは、ログインページのインターフェイスメソッドを配置します
import axios from '../util/http'
const Login = {
// 获取验证码
goPhoneCode(params) {
return axios({
method:'get',
url:`/phoneCode`,
params:params
})
},
}
export default Login
index.jsはすべてのインターフェースメソッドを登録します
/**
* api接口的统一出口
*/
import common from './common'
import login from './login'
export default {
common,
login,
}
2.新しいutilフォルダーを作成し、3つの新しいファイルを作成します
auth.jsによってカプセル化されたキャッシュメソッド
const TokenKey = 'uni_token';
// 认证令牌
export function getToken() {
return uni.getStorageSync(TokenKey)
}
export function setToken(token) {
return uni.setStorageSync(TokenKey, token)
}
export function removeToken() {
return uni.removeStorageSync(TokenKey)
}
http.jsによってカプセル化されたリクエストインターフェイスメソッド
import {getToken,removeToken} from './auth';
import env from './env';
// 封装数据返回成功提示函数------------------------------------------------------
function successState(res) {
let code = res.data.code;
console.log('@return-data:')
console.log(res)
//公共报错提醒
if(code !== 200){
// 非成功状态码弹窗
uni.showToast({
icon: 'none',
duration: 3000,
title: `${res.data.msg}`
});
}
// 登陆失效
if (res.data.code === 403) {
// 清除本地token
removeToken()
// 关闭所有页面返回到登录页
uni.reLaunch({
url: '/pages/login/login'
})
}
console.log('/------http(END)------/')
return res
}
// 封装数据返回失败提示函数------------------------------------------------------
function errorState(err) {
// 请求失败弹窗
uni.showToast({
icon: 'none',
duration: 3000,
title: '服务器错误,请稍后再试'
});
console.log('/------http(END)------/')
}
// 封装axios---------------------------------------------------------------------
function service(options = {}) {
options.url = `${env.baseUrl}${options.url}`;
// 判断本地是否存在token,如果存在则带上请求头
if (getToken()) {
options.header = {
'content-type': 'application/json',
'authorization': `${getToken()}` // 这里是token
};
}
console.log('/------http(START)------/')
console.log('@all-url:')
console.log(options.url)
console.log('@params:')
console.log(options)
return new Promise((resolved, rejected) => {
options.success = (res) => {
successState(res)
resolved(res)
};
options.fail = (err) => {
errorState(err)
rejected(err);
};
uni.request(options);
});
}
export default service;v
env.jspublicbaseurlアドレスおよびその他の変数
"use strict";
/**
* appid : 小程序appid
* baseUrl : 服务端域名
*/
export default {
appid: '****',
baseUrl: 'http://***.70.94.135:7001'
}
3.main.jsのグローバル構成
//接口
import api from './api'
Vue.prototype.$api = api
4.ページでの特定の使用
mounted() {
this.getLoginCap()
},
methods: {
//获取验证码
getLoginCap(){
let phone = '13519102731'
this.$api.login.goPhoneCode({phone}).then(res=>{
debugger
if(res.data.code == 200){
}
})
}
}
f12のconsole.logを開くと、特定のアドレス、パラメーター、および戻り値を確認できます。
公式の方法:私をクリックして直接入力してください
uni.request(OBJECT)
各ミニプログラムプラットフォームが実行されている場合、ネットワーク関連のAPIは、使用する前にドメイン名のホワイトリストで構成する必要があります。
OBJECTパラメータの説明
パラメータ名 | の種類 | 必須 | デフォルト | 説明する | プラットフォームの違いの説明 |
---|---|---|---|---|---|
url | ストリング | はい | 開発者サーバーのインターフェースアドレス | ||
データ | Object / String / ArrayBuffer | いいえ | リクエストパラメータ | アプリはArrayBufferタイプをサポートしていません | |
ヘッダ | 物体 | いいえ | リクエストのヘッダーを設定します。ヘッダーにリファラーを設定することはできません。 | アプリ側とH5側は自動的にCookieを取得し、H5側は手動で変更できません | |
方法 | ストリング | いいえ | 得る | 有効な値については、以下の説明を参照してください | |
タイムアウト | 番号 | いいえ | 60000 | タイムアウト時間(ミリ秒単位) | H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、WeChatアプレット(2.10.0)、Alipayアプレット |
データ・タイプ | ストリング | いいえ | json | jsonに設定すると、返されたデータに対してJSON.parseを実行しようとします。 | |
responseType | ストリング | いいえ | 文章 | 応答のデータ型を設定します。有効な値:text、arraybuffer | Alipayアプレットはサポートしていません |
sslVerify | ブール値 | いいえ | true | SSL証明書を確認する | アプリAndroidは(HBuilderX 2.3.3+)のみをサポートし、オフラインパッケージングはサポートしません |
withCredentials | ブール値 | いいえ | false | クロスドメインリクエストでクレデンシャル(Cookie)を伝送するかどうか | H5サポートのみ(HBuilderX 2.6.15+) |
firstIpv4 | ブール値 | いいえ | false | DNS解決にはipv4が推奨されます | アプリ-Androidのみがサポートされています(HBuilderX 2.8.0以降) |
成功 | 関数 | いいえ | 開発者サーバーから正常に返されたコールバック関数を受信します | ||
不合格 | 関数 | いいえ | インターフェイス呼び出し失敗のコールバック機能 | ||
完了 | 関数 | いいえ | インターフェイス呼び出しの終了のコールバック関数(呼び出しが成功または失敗した場合に実行されます) |
メソッドの有効な値
注:メソッドの有効な値は大文字にする必要があります。プラットフォームごとにサポートされているメソッドの有効な値は異なります。詳細については、次の表を参照してください。
方法 | アプリ | H5 | WeChatアプレット | Alipayアプレット | Baiduアプレット | ByteDanceアプレット、Feishuアプレット |
---|---|---|---|---|---|---|
得る | √ | √ | √ | √ | √ | √ |
役職 | √ | √ | √ | √ | √ | √ |
置く | √ | √ | √ | バツ | √ | √ |
消去 | √ | √ | √ | バツ | √ | バツ |
接続 | バツ | √ | √ | バツ | バツ | バツ |
頭 | バツ | √ | √ | バツ | √ | バツ |
オプション | √ | √ | √ | バツ | √ | バツ |
痕跡 | バツ | √ | √ | バツ | バツ | バツ |
成功リターンパラメータの説明
パラメータ | の種類 | 説明する |
---|---|---|
データ | Object / String / ArrayBuffer | 開発者サーバーから返されたデータ |
statusCode | 番号 | 開発者サーバーから返されたHTTPステータスコード |
ヘッダ | 物体 | 開発者サーバーから返されたHTTP応答ヘッダー |
クッキー | Array.<string> |
文字列配列としてフォーマットされた、開発者サーバーから返されるCookie |
データデータの説明
サーバーに送信される最終データは文字列型です。受信データが文字列型でない場合は、文字列に変換されます。変換ルールは次のとおりです。
GET
メソッドの場合、データはクエリ文字列に変換されます。 たとえば{ name: 'name', age: 18 }
、変換された結果はname=name&age=18
です。POST
メソッドでheader['content-type']
ある データに対してapplication/json
、JSONシリアル化が実行されます。POST
メソッドでheader['content-type']
ある データの場合application/x-www-form-urlencoded
、データはクエリ文字列に変換されます。