全棧工程師之路-中級篇之小程序開發-第二章第四節小程序http請求與請求本地json文件

上一節課,我們已經基本完成了,首頁的界面編寫。

邏輯暫時不理會。

但是我們用於展示頁面綁定的是我們本地的假數據。

接下來我們就來獲取真正的數據來展示頁面。

請跳過劃線部分。。。。。

綁定假數據編寫頁面算是前段最早做的一件事情吧。

特別是在前後端同步開發,聯合測試的時候。

服務端會先輸出接口文檔,然後前後端根據接口文檔同步開發,最後聯合測試。

這就需要前段本地編寫大量的假數據。

如果我們每個頁面的假數據的單獨編寫的話,後續和服務端聯調,我們就需要更改大量的文件。

且修改完鏈接到服務器,然後又加了一個需求或者服務器掛了,這時候你要本地調試,就會變得很麻煩,你要把你修改的地方再改回來。

這樣的操作繁瑣而且容易出錯。

這時候我們就可以思考一下,是不是有什麼辦法,構建一個本地的假數據服務。

這裏只說一個我最常用的吧,使用http請求本地的json文件,來獲取數據。

本地的json文件,根據接口文檔創建同樣的層級目錄,聯調的時候只要在請求地址的最前端加入服務器地址就可以了。

有兩個缺點:

一、這樣的請求方式,不支持攜帶參數的請求,就是不管你寫的是什麼條件,最終獲得的都是本地的json文件,原樣輸出。

二、訪問本地的文件需要些文件後綴名,如data/data.json.有些服務器請求地址是data/data。後續刪除也是一個麻煩的問題。

根據上面的思路,我們要做幾件事情。

1、獲取接口文檔

2、統一管理服務器地址

3、創建本地假數據文件

4、編寫http請求本地json文件

5、修改服務器地址訪問真正的服務器

6、調試修改。

wx.request不支持請求本地json(寫了半天發現微信不支持,這才叫瞎比比),這部分就不講了,直接講真實數據了。

軟件開發基本上就是這麼一個流程,發現問題,歸納問題,提出解決方案,編寫程序,最後測試驗證方案准確。

1、首先我在很早的時候就說過了,我們這次使用豆瓣電影的公開API文檔https://developers.douban.com/wiki/?title=api_v2

真是的請求地址是如https://api.douban.com/v2/movie/in_theaters?count=3(直接瀏覽器訪問就能請求到數據哦!)

2、我們在util.js文件中,增加服務器的統一地址變量。


其實更好的做法是,編寫一個url處理方法。這樣如果後續需要統一的追加參數,或者其他的統一操作,可以直接在這裏修改。


3、編寫http請求。我們先請求正在上映。


在小程序中我們使用wx.request發送http請求。

我們在index.js中編寫


url:請求地址,這裏我們調用factory方法處理了

method:請求方式

header:有時候服務端要求帶請求頭

data:請求參數

success:成功回調

fail:失敗回調

這裏要注意的是要在頭部引用util文件var util = require('../../utils/util.js');

這裏我們在成功和失敗的時候都打印了日誌,所以運行程序打開控制檯。


這個問題是微信爲了數據安全,要在後臺配置合法域名。後臺配置在“設置”-“開發設置”中填寫request合法域名。

由於我們沒有自己的服務器,又只是在開發環境測試,所以我們可以使用以下方法訪問非合法域名。

在開發工具左側“項目”裏面,勾選“開發環境不校驗請求域名、TLS版本以及HTTPS證書”

刷新項目,還是查看控制檯


這裏我們打印了從豆瓣獲取的數據,控制檯也明確聲明瞭工具未驗證。

4、回調函數中綁定數據


我們將服務器請求的數據展開,標記我們需要的數據,我們會發現有一些我們不需要的數據,

由於我們調用的是公共的API所以會有很多數據提供給其他用戶的其他需求,

如果我們調用私有的API的時候,這種情況比較少,但是也不排斥服務器懶直接對一個大對象給你的。

你跟他說流量啥的,都說服不了他的“方便”。

所以我們這裏寫一個方法,把我們需要的數據取出來。

還有一點是因爲我們最開始寫這個頁面的時候,是沒有藉口文檔的,所以所有的變量名都是我們自己定義的。

但是拿到藉口文檔之後,建議根據接口文檔,把變量名都改過來,對於後續的維護和調試有很大的好處。


修改index.wxml


修改movielist模板


修改moviecard模板裏綁定的變量名


運行程序


我們發現,中間這個電影的名字太長了,我們界面上不需要這麼長,

所以我們在moviecard模板的樣式文件裏面加入強制不換行,超出省列號顯示的屬性。


(截圖的時候少了一個width:200rpx;)

有些接口需要許可,所以我們先挑選標誌,不需要許可的接口

Required Scope

movie_premium_r
同樣的方法,我們編寫獲取即將上映

即將上映

Resources URI

/v2/movie/coming_soon

Top250

Resources URI

/v2/movie/top250
通過觀察我們發現這幾個接口數據格式相同。

所以我們統一修改一下請求方法。


在index中使用


運行效果


到此我們的數據基本就綁定正確了。

但是如上圖中標記的還有好幾個效果不是很理想。

這裏我們在starts模板裏面增加wx:if當分數爲0是顯示暫無評分

然後請求的時候傳遞自定義欄目標題。


修改一點點細節。不改也無所謂。這節課主要的內容是http請求。

細心的朋友會在控制檯看到這樣一條警告。這是因爲我們多次調用setData函數。


那麼預計下一節課我們就講解怎麼解決這個問題。

源文件 百度雲 鏈接:http://pan.baidu.com/s/1jIh3fL0 密碼:e84z
這節課的內容就到這裏結束了。
感謝您的閱讀。
我是莽夫,希望你開心。
如果你覺得本文對你有幫助,請掃描文末二維碼,支持博主原創。
希望大家關注我的個人公衆號ionic_



發佈了75 篇原創文章 · 獲贊 61 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章