使用政府开放数据和低代码方案构建应用
譯者注:低代碼(Low Code)開發指無需編碼或很少編碼就可以快速生成應用,通常是通過GUI和配置開發應用
\\\本文要點
\\- 市政府每天生成并發布大量的數據和信息。對公眾開放這些數據集,會使政府機構更為透明和負責。對于紐約市而言,開放數據本身就是法律規定的。\\t
- SODA(Socrata Open Data API)是最廣為使用的政府開放數據解決方案。其中,數據以REST風格的API形式呈現。\\t
- 基于云的低代碼開發平臺為外部REST API提供了一種簡單的、聲明式的訪問方式,支持前所未有范圍的用戶去使用可用的信息,無需用戶嫻熟掌握開發技術。\\t
- 本文最后,演示了如何使用Oracle Application Express(APEX),一種基于云計算的低代碼開發工具,構建一個提供紐約市311服務請求公開數據報告和圖表的應用。\
市政府每天生成并發布大量的數據和信息。對公眾開放這些數據集,會使政府機構更為透明,讓政府對公民更為負責。政府通過鼓勵對數據集的使用和免費分發,邀請公民更加積極地參與公共機構事務,推動創建以公民為中心的創新服務和解決方案。
\\對紐約市而言,開放數據本身就是法律規定的。2012年頒布的《開放數據法》中規定,所有的公開數據應在2018年底之前在單一門戶網站上提供。目前,紐約市已在opendata.cityofnewyork.us上提供了數百個數據集。網站支持公民按機構或類別查找數據集,并通過所提供的實用程序搜索和過濾數據。全美國已有數百個城市類似地提供了數據集,通常遵循相同的發布標準。
\\這些數據集的真正價值在于,它們是以基于標準REST API方式提供的,支持使用第三方工具和框架的開發人員利用這些豐富的信息,構建新的創新應用和解決方案。基于低代碼(Low Code)和云的開發平臺,提供了一種對外部REST API的簡單的、聲明式的訪問方式,這使得前所未有地廣泛規模的受眾可以利用更多的可用信息,盡管這些用戶可能并非非常精通具體的開發技術。
\\本文給出了對政府開放數據(Municipal Open Data)、REST API和Socrata Open Data API等概念的一個高層概覽。其中,Socrata Open Data API正被紐約及其它許多城市所使用。通過本文,讀者將學會如何使用基本的過濾器、SoQL查詢和SoQL函數,查看和分析可用的數據。本文還會介紹各種用于查看并理解所提供API的工具。在具備了上述知識之后,讀者將學會如何在一些廣為使用的數據集(例如,311服務電話,紐約市招聘信息)上構建應用。
\\政府開放數據
\\自本世紀初以來,開放政府數據的想法發展勢頭強勁?;ヂ摼W通常被看成是現代世界的一個公共空間,政府可從中更好地了解公民及他們的需求,讓公民充分地參與到政府事務中。因此,向公眾開放政府數據,有利于開展民間討論、改善公共福利,并可更有效地利用公共資源。
\\開放政府(Open Government)公約于2007年在加利福尼亞州的Sebastopol提出。公約中給出了開放政府數據(Open Government Data)的八項原則:
\\- 完整性:排除具有隱私和安全上限制的數據,所有公眾數據都應提供。\\t
- 原始性:數據應按原樣提供,具有最高級別的粒度,不得做匯總或修改。\\t
- 時效性:數據應盡可能第一時間提供,并有必要保留數據的價值。\\t
- 可訪問性:數據應該提供給最廣泛的用戶和目的。\\t
- 機器可處理:數據的結構應該支持機器自動處理。\\t
- 非歧視性:數據應該可以提供給任何人,訪問不應該要求注冊。\\t
- 非專有:數據應以開放格式提供,不得存在擁有專有控制權的實體。\\t
- 免許可:數據不應受任何版權、專利商標或商業秘密法規管制。\
作為提高市政府的可訪問性,透明度和問責制的舉措的一部分,紐約市將各該市各機構和組織生成的所有公共數據通過opendata.cityofnewyork.us提供給公眾使用。該網站是一個政府生成的機器可讀數據集的存儲庫,向公眾提供了開放數據目錄。
\\通過研究分析或創建應用,任何人都可以使用這些數據集,參與并改進政府事務,從而更好地了解市政府機構是如何提供的服務、如何改善公民的生活,以及政府為公民提供服務的方式。
\\
圖1:紐約市開放數據的主頁
Socrata Open Data API(SODA)
\\REST(表現層狀態轉換,Representational State Transfer)是一種分布式超媒體系統的架構風格,是由Roy Fielding在他的博士論文中定義并給出的。REST風格描述了系統間如何使用HTTP獲取數據并生成XML、JSON等格式的數據。大多數開放數據API都基于REST,其中包括Socrata Open Data API(SODA)。
\\Socrata是一家為公共部門組織提供服務的軟件公司,它為政府工作人員和公眾發現、使用并操作已有的政府數據提供幫助。Socrata的解決方案支持將公共部門機構主業務系統的數據流自動化為可公開訪問的服務。Socrata Open Data API(SODA)是一種最廣為采用的政府開放數據解決方案。Socrata已為世界各地的政府、非營利組織和非政府組織提供了數百種不同的數據目錄。當前,許多美國城市和一些組織都具有開放數據門戶。其中,開放數據網絡(Open Data Network)https://www.opendatanetwork.com提供了一個開放數據集的全局目錄。它支持使用Global Catalog API以編程方式集成并查詢其它的系統。
\\為了與開放數據資源進行交互并與其它系統集成,我們需要一個“端點”。SODA API的“端點”就是唯一表示對象或對象集合的URL。每個Socrata數據集,以及每個單獨的數據記錄,都有其自己的端點。
\\下面鏈接所給出的例子,就是紐約市311服務請求的端點:
\\https://data.cityofnewyork.us/resource/fhrw-4uyv.json
\\在此例中,所有資源的訪問都基于一個通用的基礎路徑“/resource/”,此后是數據集標識符。每個數據集都對應一個唯一的標識符。它由八位的數字字母組成,被短橫線分為兩個四字符短語。該URL可以使用Web瀏覽器打開,也可以使用其它一系列工具訪問,例如Paw、Postman等REST Client瀏覽器插件。
\\端點URL后可以添加一些基本的過濾器和SoQL參數,實現對特定數據集的請求,或是實現對結果的查詢和操作。
\\SODA API是自描述性的,即數據集本身的模式和內容決定了數據集的查詢方式。數據中的任何字段都可以作為過濾器,只需將其作為GET參數附加到API端點即可。例如,要對上述例子做過濾,使得其中僅包括布魯克林的311服務請求,我們可以添加“borough”作為參數,然后給出自治市鎮名稱:
\\https://data.cityofnewyork.us/resource/fhrw-4uyv.json?borough=BROOKLYN
\\SoQL(Socrata查詢語言,Socrata Query Language)是一種類似于SQL的簡單查詢語言,設計用于簡化對Web上數據的操作。與標準SQL基本一樣,開發人員可以選擇(SELECT)特定的列、使用WHERE語句過濾查詢結果、對結果做排序(ORDER)和分組(GROUP),并應用一些聚合函數。
\\鑒于當前不少數據集的規模非常大,從數百萬行到數十萬行不等,因此在將數據下載到客戶端應用前對數據做匯總是至關重要的。僅加載所需的數據和聚合,而不是下載完整的數據集,這將提高查詢性能。并且在很多情況下,這種做法將使客戶端應用真正可運行。因為在許多情況下,完全下載所有的數據實際上是不可行的。
\\下表匯總列出了各項可用的URL參數,以及它們的功能。
\\| $select | 類似于SQL中的SELECT,指定需返回的一組列。 | 所有列 | SELECT |
| $where | 類似于SQL中的WHERE,指定過濾返回的列。 | 不定義過濾器 | WHERE |
| $order | 類似于SQL中的ORDER BY,指定要排序的列。 | 不指定排序 | ORDER BY |
| $group | 類似于SQL中的GROUP BY,指定分組結果的列。 | 不指定分組 | GROUP BY |
| $having | 對聚合結果行進行過濾。 | 不指定過濾 | HAVING |
| $limit | 指定最大返回結果數。 | 1000 | LIMIT |
| $offset | 用于分頁,指定從偏移量處開始顯示結果。 | 0 | OFFSET |
| $q | 對設定值做全文檢索。 | 不檢索 | N/A |
| $query | 將整個SoQL查詢字符串作為一個參數。 | N/A | N/A |
針對上面給出的311數據的例子,我們對數據做進一步的過濾和聚合,下面的URL,選定只顯示Brookly區域投訴的類型和數量,并按降序排列。
\\https://data.cityofnewyork.us/resource/fhrw-4uyv.json?$select=complaint_type,%20count(complaint_type)\u0026amp;$group=complaint_type\u0026amp;$order=count(complaint_type)%20desc\u0026amp;borough=BROOKLYN
\\低代碼應用開發
\\通過紐約市的開放數據門戶網站,以及其它一些采用Socrata Open Data解決方案的開放數據門戶網站,市民可以輕松地訪問大量的公共數據集。使用數據集所提供的工具,無疑是一種查找信息和開展研究的好方法。此外,通過基于瀏覽器的查看器,市民可以搜索、過濾、可視化并導出任何可用的數據。除了借助于基本的查詢接口之外,許多數據集還具有很大的潛力,可作為構建新型創新解決方案的基礎。如果開發人員想要將這些數據集集成到自己的應用中,可以使用Socrata Open Data API(SODA)。SODA適用于絕大多數的數據集,它通過HTTP以JSON和CSV格式提供數據。
\\所有的SODA API都提供了大量的文檔。其中包括一些代碼示例,演示了如何使用部分最廣為使用的編程語言來操作數據。這樣,對于具有所需編程技能的人,可以開放地使用數據。為了擴大這些API的潛在目標受眾,而非僅局限于專業開發人員,“低代碼”開發工具扮演著越來越重要的角色。低代碼開發允許開發人員只需插入相應的SODA URL,然后使用聲明式向導,就可以構建一些使用數據的強大組件,例如報告、圖表、日歷等。實現所有這些功能,人們只需要寫很少的代碼,或者根本不需要寫代碼。
\\低代碼應用開發的主要目的在于提高生產率,即使用較少的工作實現更多的功能、更高的一致性和更高的保真度。低代碼開發框架利用了功能強大的組件實現報告功能、數據的可視化和表單控件。這使得應用開發人員可以專注于解決業務問題,并給出解決方案,從而在一些普遍和重復性的低層代碼上花費更少的時間和精力。
\\低代碼工具可顯著地提高應用的開發生產力和可維護性。普通公民就可以成為開發人員,自動執行業務流程,并實現某一點上的解決方案。此外,低代碼工具對專業開發人員也同樣具有吸引力,它們可以顯著地降低應用開發和維護的時間和復雜性。正確使用低代碼工具,可最廣泛地為使用聲明性編程的用例提供卓越的生產力。
\\使用低代碼解決方案構建基于政府開放數據的應用
\\為展示這一解決方案的實現,下面我們將使用上面介紹的紐約市311服務電話數據,其調用接口位于:
\\https://data.cityofnewyork.us/resource/fhrw-4uyv.json
\\我們將使用Oracle Application Express(APEX)低代碼開發套件,構建基于此數據集的報告和圖表應用,效果如圖2所示。Oracle Application Express支持開發人員創建以數據庫為中心的Web應用,并具有可靠、可擴展和安全等特性。開發人員不需要過多的編程經驗,只需使用Web瀏覽器,就可以為臺式機和移動設備構建和部署基于Web的專業應用。
\\
圖2 一個APEX圖表,其中顯示了紐約市311服務請求的情況
在開始使用低代碼解決方案構建應用時,開發人員必須啟動一個本地APEX實例,或是登陸基于云的APREX服務。使用基于云服務的優點是服務總是在線的,即應用一旦完成開發,就會即刻提供給開發人員所指定的用戶。
\\一旦APEX服務可用,這時就需要開發人員創建一個APEX工作區,然后使用聲明式的“Create Application Wizard”開始構建應用。就本例而言,僅用一個空白頁面構建應用就可以了。在創建應用之后,開發人員需要在“Shared Components”中使用“Web Source”組件,創建對REST API的引用。創建新的Web源時,必須要指定API的URL端點、Web源名稱、Web源類型及HTTP方法等信息。SODA API支持通過HTTP和HTTPS訪問。
\\下一步,APEX會將端點URL拆分為特定于服務器的和特定于服務的兩個部分。APEX將使用特定于服務器的URL部分創建一個新的遠程服務器(Remote Server)對象。所生成的實體用于對指向同一服務器的REST端點進行分組。使用這樣的REST服務集合,一旦服務器發生更改,開發人員僅需調整遠程服務器對象。
\\然后,開發人員將會得到提示,需要輸入驗證信息。雖然SODA API不需要進行認證,但開發人員可以使用高級屬性添加應用令牌。此外,開發人員還可以使用可選的模塊參數,定義SODA過濾器和SoQL查詢。要實現在URL中包含參數,應該指定參數類型為“Query String”。參數可以是靜態的,也可以是動態的。動態參數支持在運行時根據用戶的操作進行動態調整。
\\創建Web源的最后一步是“Discovery”。該步驟向API端點實際發出HTTP請求,并以JSON格式返回結果。APEX對JSON結構進行分析,并創建一個數據概要文件,其中包含了所有可用的列,以及所發現的數據類型。此后,Web源與數據配置文件將被APEX中的聲明性組件創建向導使用,與APEX通常使用數據庫數據字典來讀取本地表上的表和列信息一樣。
\\在創建Web源之后,許多APEX標準組件,例如交互式報告、經典報告、圖表和日歷等,就可以直接連接到REST API。如果要使用網絡資源,開發人員只需簡單地瀏覽相應的創建頁面向導,然后選擇“Web Source”作為數據源。一旦選定了組件,開發人員就可以選擇要添加到報告中的列,或者對于圖表或日歷頁面而言,選擇將哪些列作為顯示列和值列。
\\圖3顯示了使用紐約市311服務調用API所創建的應用。在本例子中,我們使用了一個APEX交互網格,其中選擇了數據集中最相關的列,并顯示在報告中。例子中還使用內置的“Chart”功能添加了一個Oracle JET圖表,顯示了撥打311電話最多的區域。
\\
圖3 紐約市311服務電話情況
結束語
\\開放數據為市政府、地方、州和聯邦政府機構提供了與選民接觸的大量機會,使政府更加透明和負責。Open Data API不僅支持公眾在所提供的開放數據門戶網站上查找信息,而且可以作為構建新型創新服務的一個基礎。低代碼開發平臺支持通過簡單地指定API端點就著手構建應用。對于使開放數據API更易于為更廣泛的開發人員訪問,低代碼開發平臺發揮了重要的作用。開發人員可以使用簡單的聲明式向導,構建自己的解決方案,并添加其它一些數據集和服務。當前,云服務提供商使得開發人員可以輕松地使用公共REST API構建應用。因為其中所有的常見任務,包括提供服務器、授權并配置軟件和網絡等,通常都可由服務提供商負責。
\\關于作者
\\\Marc Sewtz 供職于Oracle數據庫工具組,任Oracle Application Express軟件開發經理。Marc具有14年的行業經驗,涉及咨詢、銷售和開發方面的職位。Marc于1998年加入Oracle,自2001年起,他一直致力于Oracle Application Express。他最初擔任顧問,使用Oracle Application Express作為開發框架, 編寫Oracle電子商務套件的擴展模塊。后來,他在Oracle Application Express開發組中擔任軟件架構師和開發經理。在此職位上,Marc管理著一個分布于全球的開發人員和產品經理團隊,負責并為大量的產品功能做出了貢獻,其中包括報表引擎、表格形式、PDF打印和BI Publisher集成、向導及用戶界面,還包括構件等。
\\查看英文原文: Building Apps Leveraging Municipal Open Data and Low Code Solutions?
\ 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的使用政府开放数据和低代码方案构建应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国房地产官媒爆乐视投资国贸地产,布局A
- 下一篇: Active Record 数据验证