はじめに
1. ネットワーク リクエスト
アプレットが正常に動作したい場合は、サーバーと通信してデータを取得する必要があり、通常はインターフェイスを通じて実装されます。
。データ対話は通常、ネットワーク要求インターフェイスを通じて実装されます。
uni.request(OBJECT) は、ネットワーク要求を開始するために使用されるインターフェイスです。 OBJECT の共通パラメータは次のとおりです:
パラメータ名
Type
説明 | url | 文字列 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
開発者サーバー インターフェイス アドレス | data | Object/String/ArrayBuffer | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
リクエストパラメータ | header | Object | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
リクエストヘッダーを設定します、Referer | method | String | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
リクエスト メソッド (GET を含む) を設定できません。 POST、PUT、DELETE およびその他のメソッド | timeout | Number | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
タイムアウト時間、ユニット ms | dataType | String | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
json に設定すると、返されたデータに対して JSON.parse を実行してみてください | responseType | String | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
レスポンスのデータ型を設定します。有効な値: text、arraybuffer | success | Function | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
開発者から受信コールバック関数がサーバーから正常に返されました | fail | Function | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
インターフェイス呼び出し失敗したコールバック関数 | #complete | Function | No | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
最後のコールバック関数インターフェイス呼び出し (呼び出しの成功と失敗の両方が実行されます) |
通常のリクエストを行うには GET メソッドを使用します。index.vue は次のとおりです: <template> <view> {{res}} </view></template><script> export default { data() { return { res:'' } }, onLoad() { uni.request({ url:'https://demo.hcoder.net', method: 'GET', success:function(res){ console.log(res) } }) }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { } }</script><style> </style> ログイン後にコピー Display: データ data が次のとおりであることがわかります。リクエスト後に返されました。 注: 次に、json データをリクエストし、POST メソッドを使用して、次のようにリクエストします。 <template> <view> {{res}} </view></template><script> export default { data() { return { res: '' } }, onLoad() { const request1 = uni.request({ url: 'https://demo.hcoder.net/index.php?m=getJson', success: function(res) { console.log(res.data); } }); // const request2 = uni.request({ url: 'https://demo.hcoder.net/index.php', data: { name: 'Corley', 'age': 18 }, method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: function(res) { console.log(res.data); } }); }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: {} }</script><style></style> ログイン後にコピー 表示: データも返されることがわかります。 2. 画像処理 1.uni.chooseImage(OBJECT) ローカル アルバムから写真を選択するか、カメラを使用して写真を撮ります。 OBJECT の共通パラメータは次のとおりです:
index.vue は次のとおりです: <template> <view> <button type="primary" @click="img">上传图片</button> </view></template><script> export default { data() { return { } }, onLoad() { }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { img: function(){ uni.chooseImage({ count: 9, sizeType:"compressed", success:function(res){ console.log(res) } }) } } }</script><style></style> ログイン後にコピー Display: アップロードが成功すると、結果として一時画像へのパス リンクが返されることがわかります。 2.uni.previewImage(OBJECT) プレビュー画像。 OBJECT の共通パラメータは次のとおりです。
index.vue如下: <template> <view> <button type="primary" @click="img">获取图片信息</button> </view></template><script> export default { data() { return { } }, onLoad() { }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { img: function(){ uni.getImageInfo({ src: 'https://cn.bing.com/th?id=OHR.HolidayNubble_ZH-CN8122183595_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp', success: function(res){ console.log(res) } }) } } }</script><style></style> ログイン後にコピー 显示: 可以看到,获取到了图片的大小、类型和方向等信息。 4.uni.saveImageToPhotosAlbum(OBJECT) 保存图片到系统相册。 OBJECT常见参数如下:
index.vue如下: <template> <view> <button type="primary" @click="img">上传图片并下载</button> </view></template><script> export default { data() { return {} }, onLoad() { }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { img: function() { uni.chooseImage({ count: 9, sizeType: "compressed", success: function(res) { console.log(res); uni.saveImageToPhotosAlbum({ filePath: res.tempFilePaths[0], success:function(){ console.log('save success'); } }) } }) } } }</script><style></style> ログイン後にコピー 显示: 可以看到,可以实现将图片保存到本地,并且图片信息一致。 三、文件上传和下载 1.uni.uploadFile(OBJECT) 将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 OBJECT常见参数如下:
index.vue如下: <template> <view> <button type="primary" @click="img">上传文件</button> <progress :percent="percent" stroke-width="20" /> </view></template><script> var _self; export default { data() { return { percent: 0 } }, onLoad() { _self = this; }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { img: function() { uni.chooseImage({ count: 1, sizeType: ["compressed"], success: function(res) { var imgFile = res.tempFilePaths[0]; console.log(imgFile); var uper = uni.uploadFile({ url: "https://demo.hcoder.net/index.php?c=uperTest", filePath: imgFile, name: 'file', success:function(upres){ console.log(upres) } }); uper.onProgressUpdate(function(prores){ _self.percent = prores.progress; console.log('上传进度'+prores.progress); console.log('已上传数据长度'+prores.totalBytesSent); console.log('预期需要上传数据总长度'+prores.totalBytesExpectedToSend); }) } }) } } }</script><style></style> ログイン後にコピー 显示: 可以看到,在上传图片文件之后,获取到了实时的上传进度、并在进度条中同步显示。 除了使用 2.uni.downloadFile(OBJECT) 下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。 OBJECT常见参数如下:
index.vue如下: <template> <view> <button type="primary" @click="img">下载文件</button> <progress :percent="percent" stroke-width="20" /> </view></template><script> var _self; export default { data() { return { percent: 0, } }, onLoad() { _self = this; }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { img: function() { const down = uni.downloadFile({ url: 'https://bkimg.cdn.bcebos.com/pic/95eef01f3a292df56f9e63a6b2315c6034a87320?x-bce-process=image/resize,m_lfit,w_220,h_220,limit_1', success: function(res) { if (res.statusCode === 200) { console.log(res); uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: function() { console.log('save success'); } }) } } }); down.onProgressUpdate((prores) => { _self.percent = prores.progress; console.log('下载进度' + prores.progress); console.log('已下载数据长度' + prores.totalBytesWritten); console.log('预期下载数据总长度' + prores.totalBytesExpectedToWrite); }); } } }</script><style></style> ログイン後にコピー 显示: 可以下载图片到本地并保存。 四、数据缓存 在APP或者小程序中,可以利用本地存储来保存一些数据,比如用户登录数据,在使用用户名密码或者第三方登录方式进行登录后,会将用户信息保存到服务器端,会将用户id和用户随机码(与用户匹配)以键值对的形式到本地,每次与远程进行交互时,都会将保存下来的用户数据发送到远程进行校验。 1.uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口,可以在存储的同时进行其他操作。 OBJECT参数及其意义如下:
2.uni.setStorageSync(KEY,DATA) 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口,需要在数据存储完成之后才能进行其他操作。 参数及其意义如下:
在使用
<template> <view> <button type="primary" @click="asyncsave">异步保存数据</button> <button type="primary" @click="syncsave">同步保存数据</button> </view></template><script> export default { data() { return {} }, onLoad() { }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { asyncsave: function(){ uni.setStorage({ key: 'name', data: 'Corley', fail:function(){ console.log('Save failed') } }); }, syncsave: function(){ try{ uni.setStorageSync('age', '18') }catch(e){ console.log(e) } } } }</script><style></style> ログイン後にコピー 显示: 可以看到,两种方式都将数据保存下来。 3.uni.getStorage(OBJECT) 从本地缓存中异步获取指定 key 对应的内容。 OBJECT 参数及其含义如下:
4.uni.getStorageSync(KEY) 从本地缓存中同步获取指定 key 对应的内容。 参数及其含义如下:
<template> <view> <button type="primary" @click="asyncget">异步获取数据</button> <button type="primary" @click="syncget">同步获取数据</button> </view></template><script> export default { data() { return {} }, onLoad() { uni.setStorage({ key: 'name', data: 'Corley', fail:function(){ console.log('Save failed') } }); try{ uni.setStorageSync('age', '18') }catch(e){ console.log(e) } }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { asyncget: function(){ uni.getStorage({ key: 'age', success: function (res) { console.log('age:'+res.data); } }) }, syncget: function(){ try{ const name = uni.getStorageSync('name'); if (name){ console.log('name:'+name); } }catch(e){ console.log(e); } } } }</script><style></style> ログイン後にコピー 显示: 可以获取到之前保存下来的数据。 5.uni.removeStorage(OBJECT) 从本地缓存中异步移除指定 key。 OBJECT 参数及其含义如下:
6.uni.removeStorageSync(KEY) 从本地缓存中同步移除指定 key。 参数说明:
<template> <view> <button type="primary" @click="asyncremove">异步删除数据</button> <button type="primary" @click="syncremove">同步删除数据</button> </view></template><script> export default { data() { return {} }, onLoad() { uni.setStorage({ key: 'name', data: 'Corley', fail:function(){ console.log('Save failed') } }); try{ uni.setStorageSync('age', '18') }catch(e){ console.log(e) } }, onShow() { console.log('index onshow') }, onHide() { console.log('index onhide') }, methods: { asyncremove: function(){ uni.removeStorage({ key: 'age', success: function (res) { console.log('async remove success'); } }) }, syncremove: function(){ try{ uni.removeStorageSync('name'); console.log('sync remove success'); }catch(e){ console.log(e); } } } }</script><style></style> ログイン後にコピー 显示: 此时可以删除指定的数据。
总结 uni-app提供的的js接口包括标准ECMAScript的js API 和 uni 扩展 API 两部分,每个接口都能实现特定的功能,可以根据具体需要选择使用,来进一步加快开发效率。 |
以上がUni-App 入門チュートリアルのインターフェイスの基本的な使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。