• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      體驗構(gòu)建學(xué)校開放API

      2017-01-03 22:23金琦
      中國信息技術(shù)教育 2016年23期
      關(guān)鍵詞:調(diào)用開發(fā)者變量

      金琦

      引言

      目前,眾多教學(xué)管理系統(tǒng)的涌現(xiàn),給學(xué)校教育帶來便利的同時也帶來了不少挑戰(zhàn)。很多學(xué)校多個信息系統(tǒng)由于時間和開發(fā)公司的差異,造成各教育教學(xué)系統(tǒng)數(shù)據(jù)相互隔離,無法進(jìn)行共享。未來,數(shù)據(jù)將是學(xué)校發(fā)展中最為重要的資源,目前這樣的態(tài)勢勢必會讓學(xué)校收集、分析、轉(zhuǎn)移教學(xué)數(shù)據(jù)消耗大量的人力物力,還要面對其間產(chǎn)生的各種錯誤。因此,建設(shè)學(xué)校的新型架構(gòu)數(shù)據(jù)中心,向?qū)W校所有應(yīng)用提供基礎(chǔ)數(shù)據(jù),同時能接收學(xué)校所有應(yīng)用所產(chǎn)生的數(shù)據(jù),打通其中的數(shù)據(jù)通道,對數(shù)據(jù)進(jìn)行有效整理和挖掘,是每所有現(xiàn)代教育情懷的學(xué)校的努力方向。建立自己的開放API就是一種有效的嘗試,API是應(yīng)用程序編程接口(Application Programming Interface)三個首字母的縮寫,而開放API(Open API)是服務(wù)型網(wǎng)站常見的一種應(yīng)用,網(wǎng)站的服務(wù)商將自己的網(wǎng)站服務(wù)封裝成一系列API開放出去,供第三方開發(fā)者使用。Amazon和eBay等公司很早就有開放API,但是對應(yīng)的數(shù)據(jù)往往集中在商品上,與人們的日?;ヂ?lián)網(wǎng)應(yīng)用有一定的距離。真正推動整個互聯(lián)網(wǎng)開放的發(fā)端,應(yīng)該算是Google在2005年開放Google Maps的API,目前谷歌公司提供的API相對完整,大部分谷歌服務(wù)都有相對應(yīng)的API可以調(diào)用,下面我示范如何使用經(jīng)典的Google Maps API將谷歌地圖加入到網(wǎng)頁中(如圖1)。

      考慮到PHP作為一種卓越的腳本語言,具有跨平臺(可運(yùn)行在UNIX、LINUX、Windows、Mac OS下)、低消耗(PHP消耗相當(dāng)少的系統(tǒng)資源)、運(yùn)行效率高等優(yōu)點,本文中范例前后端網(wǎng)頁也由PHP來說明:bj.php用來顯示復(fù)選列表,用戶只要選擇目標(biāo)位置,然后點擊瀏覽地圖,就會調(diào)用map.php,其中下頁圖2所示的bj.php第7~10行為PHP代碼,定義了一個名為bj_address的數(shù)組來存放目標(biāo)位置的地址信息,若景點個數(shù)多,此處也可以改用數(shù)據(jù)庫存放相關(guān)數(shù)據(jù)。第13~19行為插入一個表單,里面包含有四個位置的復(fù)選列表和一個瀏覽地圖按鈕,各個項目的value屬性被指定為各個位置的地址信息,當(dāng)用戶單擊“瀏覽地圖”按鈕后,就會執(zhí)行action屬性指定的map.php表單處理頁面。

      我們再來觀察下頁圖3所示的處理程序map.php,原本的地圖功能,可能會讓讀者覺得程序代碼很繁雜,其實不然!這主要是因為有了Google Maps API的幫助,其中第4行就是載入一個Google Maps API;第7~14行定義一個initialize函數(shù),負(fù)責(zé)地圖的初始化工作,建立屬于google.maps的相關(guān)類,并調(diào)用第15~28行codeAddress()函數(shù)。第32行的value就是用戶在bj.php頁面中選中的目標(biāo)位置的地址,使得第16行就是利用這個元素獲取要在地圖上做標(biāo)記的地址。

      在我們對開放API有了初步體驗后,下面就構(gòu)造了這樣一個情境模式:為適應(yīng)移動辦公需要,對學(xué)校原有的Web郵件系統(tǒng)建立一個開放API,以方便移動應(yīng)用開發(fā)公司調(diào)用作為范例來大致描述通過PHP連接原有數(shù)據(jù)庫、生成JSON格式的開放API、調(diào)用開放API這一過程。

      過程示范

      1.連接原有數(shù)據(jù)庫

      創(chuàng)建一個連接學(xué)?,F(xiàn)有MS SQL SERVER的func.php,圖4所示的關(guān)鍵代碼表明其是連接到數(shù)據(jù)庫服務(wù)器(10.8.32.89)上的SCHOOL_ERP的數(shù)據(jù)庫。在該數(shù)據(jù)庫中只需配給“apiuser”用戶讀取權(quán)限即可(注:PHP在高版本上需要使用sqlsrv擴(kuò)展對Sql Server進(jìn)行連接,安裝過程略)。

      2.構(gòu)建JSON格式的開放API

      用readmail.php來構(gòu)建,下頁圖5截取了關(guān)鍵之處并做出解釋,第3~4行為應(yīng)用上一級目錄下的func.php,設(shè)置輸出到瀏覽器的類型和編碼,第5行表示以GET方式獲取提供的教師姓名傳遞給name變量,轉(zhuǎn)換name的編碼為gbk,由于學(xué)校原始數(shù)據(jù)庫是微軟SQL Server,當(dāng)前編碼為gbk編碼,第10行是一句符合我們預(yù)期API調(diào)用的一條SQL查詢語句,第11~13行是為了防止SQL注入,創(chuàng)建一個預(yù)處理語句,將$name的值綁定到上面$sql變量里的“?”部分,第14行定義了一個數(shù)組,用于保存后面輸出的數(shù)據(jù)。第15~18行用while遍歷數(shù)據(jù),其中sqlsrv_fetch_array函數(shù)獲取了執(zhí)行后的結(jié)果,賦值到$result變量中,對數(shù)據(jù)中的send_dt數(shù)據(jù)進(jìn)行處理,把處理好的數(shù)據(jù)保存到$arr數(shù)組里。第19~20行將獲得的數(shù)據(jù)編碼轉(zhuǎn)換為utf8(防止輸出時數(shù)據(jù)亂碼),使用json_encode函數(shù),封裝獲得的結(jié)果,并且輸出。

      這時就生成了一位教師的最近5封郵件信息的API接口“http://wx.ourschool.cn/cjcxcs/api/getemail.php”,在此我們可以嘗試直接將某位教師的姓名作為name變量傳遞參數(shù)代入,向開放API發(fā)出GET請求。獲得JSON格式的文本后,將文本按照J(rèn)SON格式解碼,如圖6所示。

      開放API的數(shù)據(jù)格式一般有JSON(JavaScript Object Notation)和XML(EXtensible Markup Language)兩種,考慮到簡潔性和輕量性,我們通常會使用JSON,它方便人們進(jìn)行閱讀和編寫,同時也方便了機(jī)器進(jìn)行解析和生成。讀者可以到http://json.cn網(wǎng)站了解和在線解析JSON結(jié)構(gòu)(如圖7)。

      3.通過AJAX構(gòu)建終端顯示

      通過使用AJAX(異步JavaScript和XML)異步獲取的方式調(diào)用上述的API,進(jìn)而解析接口返回的JSON,就可以在相關(guān)Web App里顯示用戶頁面(如下頁圖8)。

      以上是根據(jù)學(xué)?,F(xiàn)有的動態(tài)網(wǎng)站進(jìn)行了接口開發(fā),以方便后繼應(yīng)用進(jìn)行開發(fā),但還有一些情況是依靠學(xué)?,F(xiàn)有條件無法進(jìn)行后繼開發(fā)的,最為典型的就是短信應(yīng)用,如我校微信報修平臺需要將維修信息發(fā)給修理師傅,除了微信通知外,為了能更及時傳送,又加上一條運(yùn)營商維修短信通知,功能如下頁圖9所示。

      這時我們可到國內(nèi)在線某API數(shù)據(jù)供應(yīng)商處進(jìn)行體驗申請短信API。申請后,會在后臺看到該API的配置服務(wù)信息,需要指出的是,商業(yè)化的API請求通常為HTTP GET方式,返回數(shù)據(jù)為JSON格式,為了防止API被濫用或惡意使用,要求每個API使用者都要申請一個API Key,每個API Key對應(yīng)唯一的一個API使用者,下頁圖10中的AppKey即為我校的一個API Key。

      接下去可以創(chuàng)建一個短信模板,如“【報修平臺】收到的新的來自#name#的報修信息,分類為:#app#”,#號中間的變量由開發(fā)者自行定義(如圖11)。

      然后根據(jù)圖12的主要代碼段創(chuàng)建一個短信通知頁面,這樣接到報修后可短信快速通知維修人員維修。第3行表示篩選出接收短信權(quán)限的對象,用戶報修后,數(shù)據(jù)庫會執(zhí)行一條插入語句,進(jìn)而觸發(fā)到第10行的短信供應(yīng)商API接口處傳遞數(shù)據(jù),第13~16行為具體的傳遞數(shù)據(jù)(API KEY、發(fā)送號碼、自定義的模板號和模板中顯示的變量數(shù)據(jù))。

      上例在演示學(xué)校構(gòu)建自身基礎(chǔ)API的同時,還借用了成熟商業(yè)平臺的開放API,我想這種模式可能也正是開放API的意義所在。如果教育工作者能意識到這種開發(fā)模式是一種挑戰(zhàn),一種創(chuàng)新,更是一種機(jī)會,有意識地讓學(xué)校開發(fā)的教育教學(xué)資源系統(tǒng)更符合這個時代需要的標(biāo)準(zhǔn)和規(guī)范,直接將標(biāo)準(zhǔn)化后的數(shù)據(jù)提供給開發(fā)者,將極大地提高開發(fā)者的工作效率,也將提高學(xué)校的信息化效率。如果還能在上級教育主管機(jī)構(gòu)統(tǒng)籌規(guī)劃下,形成區(qū)域和校際間的一個完整、統(tǒng)一的教育教學(xué)數(shù)據(jù)開放API,則能讓區(qū)域乃至全國教育教學(xué)數(shù)據(jù)趨向完整、開放,進(jìn)而真正做到直接交換和共享信息,勢必會開啟一個教育類創(chuàng)新的新時代。

      猜你喜歡
      調(diào)用開發(fā)者變量
      基于Android Broadcast的短信安全監(jiān)聽系統(tǒng)的設(shè)計和實現(xiàn)
      “85后”高學(xué)歷男性成為APP開發(fā)新生主力軍
      16%游戲開發(fā)者看好VR
      分離變量法:常見的通性通法
      利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
      不可忽視變量的離散與連續(xù)
      輕松把握變量之間的關(guān)系
      C++語言中函數(shù)參數(shù)傳遞方式剖析
      變中抓“不變量”等7則
      嘉定区| 拉萨市| 桃园县| 闽侯县| 蓬安县| 罗城| 房山区| 额敏县| 胶南市| 巴东县| 富锦市| 罗城| 昭平县| 扎鲁特旗| 白水县| 交城县| 焦作市| 康平县| 永城市| 东丽区| 武胜县| 青神县| 弥勒县| 玉树县| 莆田市| 贵州省| 灌云县| 成武县| 东阿县| 禹城市| 城口县| 航空| 泰顺县| 萝北县| 通河县| 玉环县| 芮城县| 理塘县| 宁都县| 平阴县| 邻水|