SlideShare a Scribd company logo
ASP.NET Web API
陳傳興, Bruce
2013/03/30
http://mvc.tw
 現任美商微軟最有價值專家(2012 ~ 2013年)
 藍色小舖BCP高級專家、MSDN Forum MCC
 《ASP.NET MVC 4網站開發美學》共同作者
 http://blog.kkbruce.net
 http://gplus.to/kkbruce
 plurk:kk_bruce
2
關於我(about.me/kkbruce)
http://mvc.tw
REST
ASP.NET Web API
跨平台HTTP服務存取
Web Tools 2012.2 for Web API
3
議題
http://mvc.tw
One ASP.NET
4
http://mvc.tw
Representational State
Transfer
Architectural Style
REST完全擁抱HTTP
5
REST / RESTful
http://mvc.tw
HTTP
6
如何正確使用
http://mvc.tw
Service Address
Resource
Parameters
7
如何使用URI
http://mvc.tw
服務在那裡?
http://  http服務, ftp://  ftp服務,
file:///  檔案服務
資源在那裡?
localhost:9527/秋香
參數?
?action=“進入華府”&play=“小強,你怎麼了”
8
URI指出三件事
http://mvc.tw
POST
GET
PUT
DELETE
9
HTTP - Verb
http://mvc.tw
GET /秋香/芳心
POST /秋香/唐寅詩集
PUT /對穿腸/一等下流
DELETE /奪命書生劍/霸王槍
10
HTTP動詞
http://mvc.tw
Content Negotiation
Status Codes
Security
Etags, etc.
11
HTTP - Headers
http://mvc.tw 12
http://mvc.tw
Payload
Media Types
Hypermedia
13
HTTP - Body
http://mvc.tw
 ASP.NET Routing用以提供友善的URL。
ASP.NET MVC 預設格式。
ASP.NET v4.0 應用程式,參考 http://goo.gl/3Q9kW。
 友善:
http://kkbruce.net/blog/2013/3/23
 不友善:
http://kkbruce.net/blog/?year=2013&month=3&day=
23
14
資源是由URI來指定
http://mvc.tw 15
資源與CRUD方法
資源操作 HTTP方法 說明
Create POST 新增資源
Read GET 取得資源
Update PUT 更新資源
Delete DELETE 刪除資源
http://mvc.tw 16
資源與HTTP方法
HTTP方法 資源:
/api/values
資源:
/api/values/1
GET 取得所有資源 取得指定資源
PUT 更新所有資源 更新指定資源
POST 新增一組資源 新增一組資源
DELETE 刪除所有資源 刪除指定資源
http://mvc.tw
 資源:Get http://localhost/api/values
 Firefox, Chrome  會以XML表現
 IE 10  會以JSON表現
17
操作資源的表現形式
http://mvc.tw 18
What is Web API?
http://mvc.tw
整合ASP.NET MVC功能 整合WCF Web API功能
ASP.NET Routing(*) Modern HTTP Programming model
Model binding HttpClient(*)
Validation Task-based async
Filters Formatting
Link Generation Content negotiation
Testability Server-side query composition
IoC integration Create custom help pages(*)
Visual Studio Template(*) Self-host
Scaffolding(*) Tracing(*)
19
ASP.NET Web API功能有那些?
Demo
http://mvc.tw 21
http://mvc.tw 22
注意Routing定義
 config.Routes.MapHttpRoute(
name:="DefaultApi",
routeTemplate:="api/{controller}/{id}“,
defaults:=New With {.id =
RouteParameter.Optional})
 GET /api/values
 GET /api/values/1
Demo
http://mvc.tw 24
http://mvc.tw
System.Net.Http命名空間
.NET Framework 4.5
存取Web API的超級好幫手
25
HttpClient類別
http://mvc.tw
撰寫容易
1.資源在那裡?
2.做什麼動作?
26
HttpClient類別的優點
http://mvc.tw
HttpClient方法 說明
GetAsync() Read
PostAsync()、
PostAsJsonAsync()
Create
PutAsync()、
PutAsJsonAsync()
Update
DeleteAsync() Delete
27
HttpClient的CRUD
Demo
http://mvc.tw 29
http://mvc.tw
Windows Azure – Upload to Blob
30
 必須安裝Windows Azure SDK。
http://mvc.tw
取得金鑰
31
http://mvc.tw
Blob上傳結果
32
Demo
http://mvc.tw 34
http://mvc.tw
強調功能增強,與Web API相關的有:
1.OData
2.Tracing
3.API Help Page
35
ASP.NET Web Tools 2012.2
http://mvc.tw 36
http://mvc.tw
與Visual Studio 2012整合
由WebApiConfig組態檔案設置
預設啟用(*)
必須以F5啟動偵錯才有作用
37
Tracing
DEMO
http://mvc.tw 39
http://mvc.tw
內建於ASP.NET Web API範本之中
Online Document -- 注意安全性
強調客製化(Open Source,OK!)
Offline Document -- 快速產生
40
API Help Page
DEMO
http://mvc.tw 42
http://mvc.tw
 http://nuget.org/packages/Microsoft.AspNet.WebA
pi.OData/
43
OData
http://mvc.tw 44
改版之快
http://mvc.tw
Odata選項 by 0.1.0
45
基本選項 說明
$top=n 前N筆
$skip=n 略過N筆
$filter=<expression> 依條件過濾
$orderby=<expression> 排序
 以QueryString方式執行
 $skip + $top = paging
http://mvc.tw
運算子 by 0.1.0
46
運算子 說明
eq 等於
gt 大於
lt 小於
ne 不等於
 $filter=UnitPrice gt 100&$orderby=ProductName
DEMO
http://mvc.tw
Operators by OData 4.0.0
48
add
sub
mul
div
mod
http://mvc.tw
Operators by OData 4.0.0
49
eq
ne
gt
ge
lt
le
and
or
not
http://mvc.tw
QueryOptions by OData 4.0.0
50
$skip
$top
$orderby
$expand
$select
$inlineCount
$format
$skipToken
DEMO
http://mvc.tw
小結
52
一個輕量且高效HTTP服務平台
完全相容MVC的開發經驗
有高擴充性與可攜性(*)
OData是可期待的明日之星
http://mvc.tw
工商時間
53
沒買的快去買
買的人簽名吧
 http://books.gotop.com.
tw/v_ACL036500
謝謝各位
• 本投影片所包含的商標與文字皆屬原著作者所有。
• 本投影片使用的圖片皆從網路搜尋。
• 本著作係採用 Creative Commons 姓名標示-非商業性-相同方式分享 3.0 台灣 (中華民國) 授權條款授權。
h t t p : / / m v c . t w

More Related Content

Viewers also liked (15)

PPTX
Owin e katana
Tanato Cartaxo
 
PPTX
Owin and-katana-overview
sonia merchant
 
PPTX
ASP.NET Web API O to 100
Himanshu Desai
 
PPTX
Moving forward with ASP.NET Core
Enea Gabriel
 
PPTX
End to End Security with MVC and Web API
Michele Leroux Bustamante
 
PPTX
Web api crud operations
Eyal Vardi
 
PPTX
Creating scalable message driven solutions akkadotnet
David Hoerster
 
PPTX
Middlewares ASP.NET
Bruno Belarmino
 
PPTX
ASP.NET Mvc 4 web api
Tiago Knoch
 
PPTX
AKFP At A Glance (2016)
Al-Khidmat-Foundation-Pakistan
 
PPTX
Web api 2 With MVC 5 With TrainerKrunal
Krunal Trivedi
 
PDF
2015 Upload Campaigns Calendar - SlideShare
SlideShare
 
PPTX
What to Upload to SlideShare
SlideShare
 
PDF
Getting Started With SlideShare
SlideShare
 
Owin e katana
Tanato Cartaxo
 
Owin and-katana-overview
sonia merchant
 
ASP.NET Web API O to 100
Himanshu Desai
 
Moving forward with ASP.NET Core
Enea Gabriel
 
End to End Security with MVC and Web API
Michele Leroux Bustamante
 
Web api crud operations
Eyal Vardi
 
Creating scalable message driven solutions akkadotnet
David Hoerster
 
Middlewares ASP.NET
Bruno Belarmino
 
ASP.NET Mvc 4 web api
Tiago Knoch
 
AKFP At A Glance (2016)
Al-Khidmat-Foundation-Pakistan
 
Web api 2 With MVC 5 With TrainerKrunal
Krunal Trivedi
 
2015 Upload Campaigns Calendar - SlideShare
SlideShare
 
What to Upload to SlideShare
SlideShare
 
Getting Started With SlideShare
SlideShare
 

Similar to ASP.NET MVC Web API -twMVC#8 (20)

PDF
20130823微軟雲端平台開發者日
twMVC
 
PDF
輕鬆上手Asp.net web api 2.1-twMVC#14
twMVC
 
PDF
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC
 
PPSX
利用 ASP.NET MVC 提升您的 Web 應用程式
Chui-Wen Chiu
 
PPTX
ASP.NET MVC 善用網路資源快速完打造網站
twMVC
 
PDF
twMVC#06 | 架構行動式網站(使用 ASP.NET MVC 4.0)
twMVC
 
PDF
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
twMVC
 
PPTX
從SOA到REST -- Web Service、WCF、WebAPI的應用情境
MIS2000 Lab.
 
PPTX
Asp.net mvc 4 web api 開發簡介
Gelis Wu
 
PDF
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC
 
PDF
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC
 
PDF
Asp.net+mvc4框架揭秘
Zhenhua Tang
 
PDF
API Survey #2 - Firebase realtime database
Szuping Wang
 
PDF
Real World ASP.NET MVC
jeffz
 
PDF
Asp.Net Mvc 1.0
Chui-Wen Chiu
 
PDF
Non-MVC Web Framework
Fred Chien
 
PDF
twMVC#10 | ASP.NET MVC Model 的設計與使用
twMVC
 
PDF
ASP.NET MVC Model 的設計與使用 twMVC#10
twMVC
 
PDF
twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC
 
PPT
Rest Ruby On Rails
shaokun
 
20130823微軟雲端平台開發者日
twMVC
 
輕鬆上手Asp.net web api 2.1-twMVC#14
twMVC
 
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC
 
利用 ASP.NET MVC 提升您的 Web 應用程式
Chui-Wen Chiu
 
ASP.NET MVC 善用網路資源快速完打造網站
twMVC
 
twMVC#06 | 架構行動式網站(使用 ASP.NET MVC 4.0)
twMVC
 
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
twMVC
 
從SOA到REST -- Web Service、WCF、WebAPI的應用情境
MIS2000 Lab.
 
Asp.net mvc 4 web api 開發簡介
Gelis Wu
 
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC
 
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC
 
Asp.net+mvc4框架揭秘
Zhenhua Tang
 
API Survey #2 - Firebase realtime database
Szuping Wang
 
Real World ASP.NET MVC
jeffz
 
Asp.Net Mvc 1.0
Chui-Wen Chiu
 
Non-MVC Web Framework
Fred Chien
 
twMVC#10 | ASP.NET MVC Model 的設計與使用
twMVC
 
ASP.NET MVC Model 的設計與使用 twMVC#10
twMVC
 
twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC
 
Rest Ruby On Rails
shaokun
 
Ad

More from twMVC (20)

PDF
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
twMVC
 
PDF
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
twMVC
 
PDF
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
twMVC
 
PDF
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
twMVC
 
PDF
Azure mobileservice
twMVC
 
PDF
一小時可以打造什麼服務Plus twMVC#18
twMVC
 
PDF
專案分層架構 twMVC#18
twMVC
 
PDF
Angular js twmvc#17
twMVC
 
PDF
TypeScript-twmvc#16
twMVC
 
PDF
前端工程師與室內裝修師傅的相似之處-twMVC#16
twMVC
 
PDF
開發的效能與效率-twMVC#15
twMVC
 
PDF
動手打造 application framework-twMVC#15
twMVC
 
PDF
樞紐分析表之數據分析與統計-twMV#C14
twMVC
 
PPTX
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
twMVC
 
PPTX
RWD不是你想的那樣 tw mvc#13
twMVC
 
PDF
如何在實務上使用TDD來開發 twmvc#12
twMVC
 
PDF
Vs2013新功能介紹 twMVC#11
twMVC
 
PDF
架構設計入門 twMVC#11
twMVC
 
PDF
Knockout 從零開始,實戰教學 twMVC#10
twMVC
 
PDF
NFC近場通訊-twMVC#9
twMVC
 
雲端上的資訊安全-Global Azure Bootcamp 2015 臺北場
twMVC
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
twMVC
 
讓應用程式雲端化 由 Iaa s 邁向 paas 之路-Global Azure Bootcamp 2015 臺北場
twMVC
 
線上遊戲利用 Dev ops 開源工具 chef, docker, vagrant 在microsoft azure 的佈署實踐-Global Azure...
twMVC
 
Azure mobileservice
twMVC
 
一小時可以打造什麼服務Plus twMVC#18
twMVC
 
專案分層架構 twMVC#18
twMVC
 
Angular js twmvc#17
twMVC
 
TypeScript-twmvc#16
twMVC
 
前端工程師與室內裝修師傅的相似之處-twMVC#16
twMVC
 
開發的效能與效率-twMVC#15
twMVC
 
動手打造 application framework-twMVC#15
twMVC
 
樞紐分析表之數據分析與統計-twMV#C14
twMVC
 
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
twMVC
 
RWD不是你想的那樣 tw mvc#13
twMVC
 
如何在實務上使用TDD來開發 twmvc#12
twMVC
 
Vs2013新功能介紹 twMVC#11
twMVC
 
架構設計入門 twMVC#11
twMVC
 
Knockout 從零開始,實戰教學 twMVC#10
twMVC
 
NFC近場通訊-twMVC#9
twMVC
 
Ad

ASP.NET MVC Web API -twMVC#8