国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Web Api系列教程第2季(OData篇)(一)——OData簡介和一個(gè)小應(yīng)用

2019-11-17 01:30:42
字體:
供稿:網(wǎng)友

Web Api系列教程第2季(OData篇)(一)——OData簡介和一個(gè)小應(yīng)用

第一季的鏈接以及系列導(dǎo)航:http://www.survivalescaperooms.com/fzrain/p/3490137.html

在這里,首先要感謝Taiseer Joudeh不斷的為我們帶來最新的技術(shù)分享,樓主對(duì)web api這種技術(shù)可謂是非常的喜歡,同時(shí)也得到很多園友的支持,所以繼續(xù)是必然的。經(jīng)過上一階段的學(xué)習(xí),我們對(duì)于web api應(yīng)該已經(jīng)不是很陌生了,從本篇開始將開始介紹OData。我也是剛開始學(xué),因此把學(xué)習(xí)過程記錄下來并分享給大家,期待一起交流進(jìn)步。

在本次系列中,我們將沿用第一季的項(xiàng)目背景來構(gòu)建一個(gè)OData服務(wù),本文將用一個(gè)簡單的例子幫大家來認(rèn)識(shí)OData,在介紹例子之前我們先介紹一下OData的定義和約定。

OData簡介

Open Data PRotocol (開放數(shù)據(jù)協(xié)議,OData)是用來查詢和更新數(shù)據(jù)的一種Web協(xié)議,其提供了把存在于應(yīng)用程序中的數(shù)據(jù)暴露出來的方式。OData運(yùn)用且構(gòu)建于很多 Web技術(shù)之上,比如HTTP、Atom Publishing Protocol(AtomPub)和JSON,提供了從各種應(yīng)用程序、服務(wù)和存儲(chǔ)庫中訪問信息的能力。OData被用來從各種數(shù)據(jù)源中暴露和訪問信息, 這些數(shù)據(jù)源包括但不限于:關(guān)系數(shù)據(jù)庫、文件系統(tǒng)、內(nèi)容管理系統(tǒng)和傳統(tǒng)Web站點(diǎn)。

我們知道,構(gòu)建符合REST原則的服務(wù)應(yīng)該具備一下特點(diǎn):

1.每一個(gè)資源都由一個(gè)唯一的URI來標(biāo)識(shí)。

2.通過HTTP方法(GET, POST, PUT, and DELETE)來實(shí)現(xiàn)對(duì)資源的CRUD。

3.能根據(jù)客戶端指定的格式來返回?cái)?shù)據(jù):xml,JSON等。

Odata1

小應(yīng)用:查詢現(xiàn)有的OData服務(wù)

在我們開始創(chuàng)建OData服務(wù)之前,為了讓大家對(duì)OData有一個(gè)更深入的理解,在這里我們將查詢一個(gè)已經(jīng)存在的OData服務(wù)(使用的是Northwind數(shù)據(jù)庫),對(duì)應(yīng)的基地址是:http://services.odata.org/Northwind/Northwind.svc。你可以使用任何REST客戶端(例如fiddler,PostMan)。當(dāng)然如果只是做查詢操作,你也可以直接使用瀏覽器。

下表列舉了一些常用的Odata操作:

操作

URL

說明

             $filter http://services.odata.org/Northwind/Northwind.svc/Products?$filter=ProductName eq 'Tofu' 根據(jù)表達(dá)式的狀態(tài)返回結(jié)果(返回ProductName 等于Tofu的Products)
            $orderby http://services.odata.org/Northwind/Northwind.svc/Products?$orderby=ProductName 根據(jù)結(jié)果排序(根據(jù)ProductName列排序)
            $skip http://services.odata.org/Northwind/Northwind.svc/Products?$skip=10 越過結(jié)果中的n條數(shù)據(jù),常用于分頁
            $top http://services.odata.org/Northwind/Northwind.svc/Products?$top=10 返回結(jié)果中的前n條記錄,常用于分頁
           $select http://services.odata.org/Northwind/Northwind.svc/Products?$filter=ProductName eq 'Tofu'&$select=ProductName,UnitPrice 選擇需要返回的屬性
           $expand http://services.odata.org/Northwind/Northwind.svc/Products?$expand=Supplier 返回Products中包含的導(dǎo)航屬性(關(guān)聯(lián)屬性)Supplier
          $inlinecount http://services.odata.org/Northwind/Northwind.svc/Products?$inlinecount=allpages 向服務(wù)器獲取符合條件的資源總數(shù)(分頁的total值)

通過上面表格的內(nèi)容,我們還可以通過組合查詢條件來實(shí)現(xiàn)復(fù)雜的查詢(例如:我們想實(shí)現(xiàn)服務(wù)器端的分頁,那么我們就可以使用如下的URI:http://services.odata.org/Northwind/Northwind.svc/Products?$top=10&$skip=0&$orderby=ProductName&$inlinecount=allpages)。在上面的URI中,$skip代表跳過的數(shù)據(jù),通常指pageSize*pageIndex,同時(shí)$inlinecount返回一個(gè)int值代表記錄總數(shù)。

OData服務(wù)支持內(nèi)容的選擇,也就是說客戶端可以通過設(shè)置請(qǐng)求頭Accept header來定制響應(yīng)數(shù)據(jù)的格式,每種格式都有各自的優(yōu)缺點(diǎn),下表就說明了彼此的不同之處:

 

XML

JSON(詳細(xì)版)

JSON(輕量版)

            OData版本 版本1,2,3 版本1,2,3 版本3
          元數(shù)據(jù)及超鏈接 包含數(shù)據(jù)和元數(shù)據(jù) 包含數(shù)據(jù)和元數(shù)據(jù) 僅包含數(shù)據(jù)
          數(shù)據(jù)大小 28.67 KBs 14.34 KBs, 小了近50% 4.25 KBs, 小了近75%
對(duì)于移動(dòng)客戶端消費(fèi)是否簡單
       Accept Header application/atom+xml application/json;odata=verbose application/json

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 合水县| 峡江县| 会宁县| 临沧市| 甘孜| 顺平县| 共和县| 新巴尔虎左旗| 广东省| 新邵县| 城步| 通许县| 环江| 东明县| 西盟| 乐陵市| 定襄县| 都匀市| 辽阳市| 房山区| 河源市| 小金县| 剑川县| 密云县| 黎城县| 黑龙江省| 禹城市| 郯城县| 平和县| 商城县| 垣曲县| 达日县| 罗山县| 西安市| 广州市| 垫江县| 阿图什市| 桂林市| 贵阳市| 临泽县| 长沙县|