999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于REST的Web系統設計與實現

2017-03-31 11:30:29胡彥婷
軟件導刊 2016年8期

胡彥婷

摘 要:為了改善傳統Web系統存在的問題,研究了基于表述性狀態轉移(representational state transfer,REST)的Web系統設計,對其如何應用于棉花交易平臺的構建進行了介紹。實踐表明,基于REST的棉花Web交易系統不僅能滿足目前棉花電商交易需求,而且具有良好的擴展性和可維護性。

關鍵詞關鍵詞:REST;Web系統;JSON;HTTP;資源表示;電商平臺設計

DOIDOI:10.11907/rjdk.161405

中圖分類號:TP319

文獻標識碼:A 文章編號:1672-7800(2016)008-0122-02

0 引言

互聯網的迅速發展,對Web系統設計提出了新的要求。傳統Web系統存在設計不規范、接口不統一、擴展困難、難于集成等問題。為了改善此狀況,Roy Thomas Fielding[1]提出了表述性狀態轉移(Representational State Transfer,REST) 的設計風格,并將其用于規范Web系統設計。REST具有輕量級、平臺無關性、高擴展性、便于緩存等優點[2],已被Google、Amazon、yahoo、騰訊、新浪、阿里巴巴等國內外多家企業采用[3]。

本文將以一個大宗農產品電商平臺——大淵博棉花交易中心(www.dybcotton.com)為例,對REST在Web系統設計中的應用進行分析和討論。

1 REST風格

REST包含了4個方面的核心內容:①資源(Resource);②資源表述(Representation);③狀態轉移(State Transfer);④統一接口(Uniform Interface)。資源是系統中業務實體的抽象,可以由一個或一組統一資源定位符URI(Uniform Resource Identifier)進行標識。URI既是資源的名稱,也是資源在系統中的地址,用戶通過資源的URI與資源進行交互。資源表述是指資源在特定時刻的狀態,可以在用戶和系統間傳遞,其有多種形式,如HTML、XML、JSON、文本等。狀態轉移指資源表述在客戶端和服務器端之間的傳遞,通過這種傳遞,實現對資源的操作。統一接口是REST對資源操作方式的規范,要求對每種資源都以統一的方式操作。用戶通過請求URI訪問資源,也可在請求中附加元數據Metadata來決定資源的表現形式,然后通過HTTP協議的GET、PUT、POST和DELETE方法[4]實現對資源的操作。

2 大淵博平臺系統設計

棉花是重要的大宗農產品,目前全國每年生產皮棉400多萬噸,其中70%~80%產自新疆,距離遙遠,種植和加工分散,信息獲取不易,造成交易不便。在傳統貿易模式中人們要獲取貨源信息,只能通過電話、傳真或派專人出差到產地企業,成本高、效率低,信息滯后嚴重。為了解決傳統貿易存在的問題,有必要利用互聯網高效便捷的優點,建立統一規范的電商交易平臺。鑒于此,本系統的目標是建立包含棉花加工信息、質量信息、倉儲物流信息及交易信息的棉花電商平臺,降低交易成本、提高貿易效率。

本系統從邏輯上分為業務功能、支撐模塊、底層服務3部分,如圖1所示。

(1)業務功能模塊主要負責與用戶交互,根據用戶請求將數據以不同的形式展現出來。目前數據展示的方式有兩種,一種是用于桌面系統的Web網頁形式,數據以HTML+AJAX+JSON的形式展現。另一種是用于Android和IOS系統手機端的APP,數據以JSON的形式展現。兩種方式均通過REST接口從服務器端獲取數據。

(2)支撐模塊為業務功能提供服務支撐,完成用戶管理、訂單消息分發、系統事件記錄、數據抓取及統計挖掘等功能。

(3)底層服務包含數據存儲、數據緩存、支付接口和均衡負載4部分。本系統使用MySQL作為數據存儲,用Memcache作為數據緩存,集成了支付寶和銀聯支付接口,使用Apache反向代理實現均衡負載。

3 REST在系統中的應用

3.1 系統框架結構

本系統使用PHP語言實現的REST風格框架,該框架結構如圖2所示。在框架中,URL映射由Apache mod_rewrite[5]實現,前端控制器由設計模式中的Front Controller模式[6]實現,資源以HTML或JSON格式展現。框架的基本執行步驟為:①用戶請求通過URL映射轉發至前端控制器;②前端控制器對請求進行解析,識別所需要的服務;③框架調用對應的資源完成業務操作。

根據REST設計規范,在進行系統設計時,首先是確定系統中的實體,即資源,并為資源指定唯一的URI;然后,根據業務邏輯確定資源的操作方式;最后,根據用戶需求確定資源的表現形式。下面以棉花在線購買業務為例進行討論。

3.2 資源劃分與命名

構建REST風格的系統最重要的一步就是識別系統中的資源。本系統包含的主要資源為:①棉花批次(Batch),其為棉花加工、交易的基本單位,具有國家統一分配的批次編碼;②軋花廠(Producer),即為棉花生產加工企業,具有國家統一分配的企業代碼。該代碼與棉花批次編碼為一對多關系;③監管倉庫(Entrepot),其為國家統一認證的棉花專用監管庫,主要對棉花進行第三方監管及對棉花質量的公檢。很多情況下,倉庫也作為軋花廠的代理人,進行棉花貿易;④買家(Buyer),即棉花購買者,通常為紡織企業或貿易商;⑤交易訂單(Order),其包含購買批次列表,買方、賣方、支付方式等信息,由買家建立并提交給賣家。

確定了資源之后,即可為資源指定URI,其規則為“http://服務器根目錄/資源類別/資源標識”。根據REST規范,系統中每個URI只能指向一個資源,同時URI只表示資源,不包含對資源的操作。在本系統中,以“http://www.dybcotton.com/”作為系統的根目錄,用URI模板來表示資源。URI模板定義了URI的格式,其中包含一系列變量,這些變量在運行時會被實際參數所取代。例如,http://www.dybcotton.com/batch/{batchId},該模板定義了棉花批次的訪問方式,變量{batchId}用來表示棉花批次編碼,在運行時{batchId}被實際的批次編號所取代。根據這種方法,本系統為每個資源設定的URI模板如表1所示。

3.3 資源統一接口定義

完成資源的劃分與命名之后,下一步為資源定義相應的操作接口。在REST規范中,用HTTP協議的GET、PUT、POST、DELETE方法對資源分別進行創建(Create)、讀取(Read)、更新(Update)及刪除(Delete)操作。

雖然HTTP協議定義了4種方法,但目前主流瀏覽器對4種HTTP方法的支持并不統一,只有GET和POST方法得到了廣泛的支持,而PUT和DELETE方法在很多瀏覽器上沒有支持或只部分支持。為了保持瀏覽器兼容性,當前通常用POST方法替代PUT和DELETE方法,完成資源的添加、更新及刪除操作。鑒于此,本系統設計的資源操作接口如表2所示。

3.4 資源表現形式

在對資源命名并為其定義了統一的操作接口后,需要考慮通過URI對資源進行操作時,客戶端和服務器端應采用哪種數據格式進行交互。REST規范并未限定數據交互的格式,允許純文本、HTML、二進制數據、XML、JSON等多種格式,其中XML和JSON是目前應用最為廣泛的格式。本系統采用JSON作為數據交互格式。JSON是一種輕量、冗余少、結構簡單、與平臺無關、方便程序解析的數據格式[7]。

下面以客戶端請求加工企業代碼為65551的軋花廠信息為例,來說明本系統如何根據請求返回JSON格式的軋花廠資源信息。

根據表2,要獲取軋花廠信息,客戶端向http://www.dybcotton.com/producer/65233發送GET請求,為保證服務器端正確返回JSON格式響應,還需要在HTTP請求的Header中增加元數據“Accept=application/json”。當服務器端接收到請求后,將返回如下JSON數據:

{

“producerID”:”65551”,

“producerName”:” 奎屯康泰棉麻有限公司”,

“address”: “奎屯市獨山子經濟技術開發區”,

……

}

通過上述步驟完成對資源的訪問。類似地,可以使用HTTP的POST方法向資源URI發送JSON格式的數據,以進行資源的創建、更新和刪除操作。

4 結語

本文研究了REST規范對Web系統設計的指導作用,并將其應用于大淵博棉花交易系統的設計與開發。該系統滿足了目前棉花業務需求,具有良好的擴展性和可維護性,能很好地服務于棉花產業鏈的生產和銷售環節,成為國內有一定影響力的農產品電商平臺。

參考文獻:

[1] R T FIELDING.Architectural styles and the design of network-based software architectures[D].Irvine:University of California,2000.

[2] 盛偉翔,王昊,董曉睿,等.基于REST架構風格的精品課程平臺建設[J].南昌大學學報:理科版,2015,39(3): 251-254.

[3] 陳彥名.REST API技術及在移動通信網絡管理中的應用[J].電信工程技術與標準化, 2015(5): 81-85.

[4] Hypertext transfer protocol——HTTP/1.1 [EB/OL] .https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html.

[5] Apache module mod_rewrite[EB/OL].http://httpd.apache.org/docs/current/mod/mod_rewrite.html.

[6] MARTIN FOWLER.Patterns of enterprise application architecture[M].Boston: Addison-Wesley,2002.

[7] 張滬寅,屈乾松,胡瑞蕓.基于JSON的數據交換模型[J].計算機工程與設計,2015,36(12): 3381-3384.

(責任編輯:杜能鋼)

主站蜘蛛池模板: 国产精品污污在线观看网站| 日韩久久精品无码aV| 国产又爽又黄无遮挡免费观看| 欧美国产日韩一区二区三区精品影视| 婷婷午夜天| 国产情侣一区| 午夜无码一区二区三区在线app| 精品国产中文一级毛片在线看| 日韩国产高清无码| 一区二区三区高清视频国产女人| 亚洲另类第一页| 国产黑丝视频在线观看| 2020国产精品视频| 精品亚洲麻豆1区2区3区| 久热中文字幕在线| 69综合网| 国产自在线播放| 亚洲欧美另类日本| 国产精品一区不卡| 亚洲一区二区视频在线观看| 欧美一级高清视频在线播放| 亚洲av综合网| 极品性荡少妇一区二区色欲| 国产又粗又猛又爽视频| 亚洲国产综合自在线另类| 久久视精品| 国产另类乱子伦精品免费女| 久久久久亚洲精品成人网 | 青青草91视频| 天天综合网色中文字幕| 欧美a级完整在线观看| 白浆视频在线观看| 国产第一色| 欧美激情二区三区| 日韩欧美国产精品| 九九精品在线观看| 极品私人尤物在线精品首页| 国内视频精品| 一级毛片在线直接观看| 亚洲妓女综合网995久久| 国产浮力第一页永久地址| 中文字幕丝袜一区二区| 午夜三级在线| 国产毛片基地| 先锋资源久久| 四虎影院国产| 色综合热无码热国产| 青青青伊人色综合久久| 久久久久免费精品国产| 日韩精品毛片人妻AV不卡| 91成人在线免费观看| 成年人免费国产视频| 日韩中文字幕免费在线观看 | 97免费在线观看视频| 国产亚洲欧美日韩在线观看一区二区| jizz国产视频| 欧美日韩国产成人高清视频 | 无码人妻热线精品视频| 成人伊人色一区二区三区| 911亚洲精品| 国产三级视频网站| 天天色天天操综合网| 性欧美在线| 亚洲国产成人在线| 日日碰狠狠添天天爽| 久久国产精品无码hdav| 永久毛片在线播| 97在线国产视频| 啪啪国产视频| 久久久久免费看成人影片| av一区二区无码在线| 亚洲高清在线播放| 福利在线不卡| 欧美a级在线| 男女性色大片免费网站| 日韩激情成人| 国产男女免费完整版视频| 国产精品内射视频| 免费可以看的无遮挡av无码| 中文字幕无线码一区| 国产成人高清精品免费| 国产精品一区二区在线播放|