Your SlideShare is downloading. ×

Restful

3,094
views

Published on

Published in: Technology, Business

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,094
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
40
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. RESTful任我行
    RESTful介绍及最佳实践
    Medcl,2010.6.4
  • 2. 前情提要
    REST是什么?
    Why RESTful ?
    RESTful.NET !
  • 3. REST、RESTful???
    Roy Thomas Fielding博士2000年提出
    REST是英文Representational State Transfer的缩写
    REST是WEB服务的一种架构风格
    REST一种新型的分布式软件设计架构
    使用HTTP、URI等广泛流行的标准和协议
  • 4.  REST 架构的主要原则
    网络上的所有事物都可被抽象为资源(Resource)
    每个资源都有一个唯一的资源标识符(Resource Identifier)
    同一资源具有多种表现形式(xml、json等)
    对资源的各种操作不会改变资源标识符
    所有的操作都是无状态的(Stateless)
    Ps:符合REST原则的架构方式即可称为RESTful
  • 5. 资源、资源、资源
    处处皆资源(Resource):
    2010公司的销售数据
    小明09年一月份看过的书
    正在上映的电影
    公司销售的产品清单
    … …
    REST与资源
    REST面向的对象是资源
    RE——表现,即media type的设计。
    ST——通过跟踪超链接实现状态迁移。
  • 6. 资源与URIDesign
    RESTful风格的一大特色就是使用URI来标示资源
    URI 和 URL
    http://example.com/users/http://example.com/users/{user} (one for each user)
    http://example.com/findUserForm
    http://example.com/locations/
    http://example.com/locations/{location} (one for each location)
    http://example.com/findLocationForm
  • 7. 资源操作
    http://example.com/users/
    GET :获取一个资源 POST :创建一个新的资源 PUT :修改一个资源的状态 DELETE :删除一个资源 
  • 8. 资源展现
    Xml
    Json
    Xhtml
    RSS/Atom
    Other Media types
  • 9. 无状态性
    无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前 Request,而不必了解前面 Request 的历史
    无状态性减少了服务器从局部错误中恢复的任务量,可以非常方便地实现 Fail Over 技术,从而很容易地将服务器组件部署在集群内
    无状态性使得服务器端不必在多个 Request 中保存状态,从而可以更容易地释放资源
    无状态性无需服务组件保存 Request 状态,因此可让服务器充分利用 Pool 技术来提高稳定性和性能
  • 10. RESTful优缺点
    SOAP、WSDL、WS*
    REST
     RPC 样式的架构中,关注点在于方法,而在 REST 样式的架构中,关注点在于资源
    SO WHY REST?
    轻量级、HTTP
    无状态请求可以由任何可用服务器回答,分布式、缓存、云计算
    资源唯一URI、标准接口
    基于成熟HTTP的安全模型
    Simplicity、human-friendly … …
  • 11. REST不是什么?
    REST不是技术 
    REST不是CRUD
  • 12. RESTful.NET
    REST在.NET平台下的最佳实践
    WCF RESTful Programming Model
    Hosting WCF RESTful Services
    Securing REST Endpoints
  • 13. 前提准备
    WCF REST Service Start Kit 
    visual studio 2008 sp1 
     .net framework 3.5 sp1
    Fiddler(客户端调试)
  • 14. URI
    http://localhost:8080/rest/User
    http://localhost:8080/rest/User/{userName}
    http://localhost:8080/rest/User/xml
    /// <summary>
    /// 用户信息
    /// </summary>
    [DataContract(Name = "User")]
    public class UserInfo
    {
    [DataMember]
    public string UserName;
    [DataMember]
    public string Birthday;
    }
  • 15. 添加
    POST http://localhost:8080/rest/User
    User-Agent: Fiddler
    Host: localhost:8080
    Content-Length: 22
    Content-Type: application/json
    {"userName":"Aobama"}
  • 16. 修改
    PUT http://localhost:8080/rest/User
    Content-Length: 53
    Content-Type: application/json
    Host: localhost:8080
    {"user":{"Birthday":"1977/1/1","UserName":"medcl"}}
  • 17. 查询
    http://localhost:8080/rest/User
    http://localhost:8080/rest/User/admin
    http://localhost:8080/rest/User/xml
    http://localhost:8080/rest/Icon/