SlideShare une entreprise Scribd logo
1  sur  27
REST & OData
using ASP.NET Web API
劉昱劭
REST / RESTful
REST
O Roy Fielding 2000年
O Representational State Transfer
O 資源(分布在網路上的東西)
O 表示方式(HTML、XML、JSON、Image…)
O 狀態轉換(Client端的操作行為)

O Architectural Styel(架構風格)
O HTTP 實作(RESTful Web Service)
REST & HTTP
O 資源的位置
O 由URI來表示

O 資源的操作方式
O 獲取、創建、修改和刪除資源

O GET 、POST 、PUT 、DELETE

O 資源的表現形式
O XML、JSON…
O Accept: application/xml(HTTP Header)
URI表示
O 服務
O 資源位置
O 參數

http://localhost:8888/Contact?Name=CHT
O 以名詞為種,用“/”表示階層
O http://crm2.hisales.hinet.net/webapi/SMSA

ctivity/{activityId}
O http://crm2.hisales.hinet.net/webapi/SMSA
ctivity/{activityId}/SMSLog
資源與HTTP方法(1/2)
HTTP方法

資源:
/api/values

資源:
/api/values/1

GET

取得所有資源

取得指定資源

POST

新增一組資源

PUT

更新所有資源

更新指定資源

DELETE

刪除所有資源

刪除指定資源

GET http://crm2.hisales.hinet.net/webapi/contact
=>代表存取所有聯絡人
GET http://crm2.hisales.hinet.net/webapi/contact/{id}
=>代表存取指定id聯絡人
POST http://crm2.hisales.hinet.net/webapi/contact
=>代表新增聯絡人
資源與HTTP方法(2/2)
PUThttp://crm2.hisales.hinet.net/webapi/contact/{id}
=>代表修改指定id聯絡人
DELETEhttp://crm2.hisales.hinet.net/webapi/contact/{id}
=>代表刪除指定id聯絡人
GET http://crm2.hisales.hinet.net/webapi/contact/{id}/SMSActivity
=>代表存取與指定id聯絡人有關的所有簡訊活動
GET http://crm2.hisales.hinet.net/webapi/SMSActivity/{activityId}
=>代表存取指定簡訊活動
GEThttp://crm2.hisales.hinet.net/webapi/SMSActivity/{activityId}/SMSLo
g =>代表存取指定簡訊活動的發送記錄
POSThttp://crm2.hisales.hinet.net/webapi/MarketingList/{mid}/contact
=>代表新增聯絡人到指定的行銷名單中
OData
Open Data
Protocol(OData)
O Uniform Data Access
O ODBC
O OLEDB
O JDBC

O 沒有存取Web 資料的統一方

O Microsoft 2009年2月
O 1.0、2.0、3.0、4.0(Now)
Open Data
Protocol(OData)
O 基於RESTful與Http所制定的協定
O 統一的資料表示方式
O Atom, JSON formats

O 統一的操作
O GET(select), POST(insert), PUT(update), DEL

ETE(delete)
O 統一的URL conventions
O Navigation, filtering, sorting, paging, etc.

O http://www.odata.org/
O http://odata.ntpc.edu.tw/(新北市教育局)
URL conventions(1/2)
基本選項

說明

$top=n

前N筆

$skip=n

略過N筆

$filter=<expression>

依條件過濾

$orderby=<expression>

排序


以QueryString方式執行
$skip + $top = paging
URL conventions(2/2)
基本選項

說明

eq

等於

gt

大於

lt

小於

ne

不等於


$filter=UnitPrice gt 100&$orderby=ProductName
Operator by Odata 4.0
O Add

O eq

O le

O Div

O ne

O and

O Sub

O ge

O or

O Mod

O gt

O not

O Mul

O lt

http://www.odata.org/documentation/odata-v3documentation/url-conventions/
QueryOptions by Odata 4.0
O $skip

O $select

O $top

O $inlinecount("allpag

O $orderby

es" / "none")
O $format

O $expand

http://msdn.microsoft.com/en-us/library/dd541320.aspx
誰在用Odata(1/2)
O Microsoft
O SharePoint
O SQL Azure
O SQL Server

O IBM
O IBM WebSphere
誰在用Odata(2/2)
O Live Odata Service
O Facebook Insights
O Netflix
O Open Government Initiative
O Open Science Data initiative
O Etc..

O We can provide
O WCF Data Services
O OData4J

O ASP.NET Web API
ASP.NET Web API
ASP.NET Web API
O 1.0
O Visual Studio 2012
O ASP.NET MVC 4.0

O 2.0
O Visual Studio 2013(2013/10/18)
O ASP.NET MVC 5.0
O NuGet獨立下載
O Attribute routing、CROS、OWIN
DEMO
Q&A

Contenu connexe

Similaire à Restful & odata using asp.net web api

Similaire à Restful & odata using asp.net web api (6)

REST to RESTful Web Service
REST to RESTful Web ServiceREST to RESTful Web Service
REST to RESTful Web Service
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战
 
Intro to REST
Intro to RESTIntro to REST
Intro to REST
 
Intro to rest
Intro to restIntro to rest
Intro to rest
 
Restful
RestfulRestful
Restful
 

Plus de 昱劭 劉

設計模式的解析與活用讀後心得
設計模式的解析與活用讀後心得設計模式的解析與活用讀後心得
設計模式的解析與活用讀後心得昱劭 劉
 
Automated Web Testing Using Selenium
Automated Web Testing Using SeleniumAutomated Web Testing Using Selenium
Automated Web Testing Using Selenium昱劭 劉
 
Python開發環境建立(使用ECLIPSE)
Python開發環境建立(使用ECLIPSE)Python開發環境建立(使用ECLIPSE)
Python開發環境建立(使用ECLIPSE)昱劭 劉
 
持續整合與單元測試
持續整合與單元測試持續整合與單元測試
持續整合與單元測試昱劭 劉
 
透過Nuget管理內部共用元件
透過Nuget管理內部共用元件透過Nuget管理內部共用元件
透過Nuget管理內部共用元件昱劭 劉
 
Mongo db 簡介
Mongo db 簡介Mongo db 簡介
Mongo db 簡介昱劭 劉
 

Plus de 昱劭 劉 (6)

設計模式的解析與活用讀後心得
設計模式的解析與活用讀後心得設計模式的解析與活用讀後心得
設計模式的解析與活用讀後心得
 
Automated Web Testing Using Selenium
Automated Web Testing Using SeleniumAutomated Web Testing Using Selenium
Automated Web Testing Using Selenium
 
Python開發環境建立(使用ECLIPSE)
Python開發環境建立(使用ECLIPSE)Python開發環境建立(使用ECLIPSE)
Python開發環境建立(使用ECLIPSE)
 
持續整合與單元測試
持續整合與單元測試持續整合與單元測試
持續整合與單元測試
 
透過Nuget管理內部共用元件
透過Nuget管理內部共用元件透過Nuget管理內部共用元件
透過Nuget管理內部共用元件
 
Mongo db 簡介
Mongo db 簡介Mongo db 簡介
Mongo db 簡介
 

Restful & odata using asp.net web api