`
sunlionjun
  • 浏览: 5987 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

基于restful 风格的 web service

阅读更多
总的来说,SOAP的Web Service解决方案虽然较为成熟,且安全性较好,但是使用门槛较高,在大并发情况下会有性能问题,在互联网上使用不太普及,因此并不太适合Web 2.0网站服务使用,目前大量的Web 2.0网站使用另外一种解决方案——REST。

  REST的架构设计

  REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。

  REST架构遵循了CRUD原则,CRUD原则对于资源只需要四种行为:Create(创建)、Read(读取)、Update(更新)和Delete(删除)就可以完成对其操作和处理。这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运算一样。

  REST架构让人们真正理解我们的网络协议HTTP本来面貌,对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,因此REST把HTTP对一个URL资源的操作限制在GET、POST、PUT和DELETE这四个之内。这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

  REST的设计准则

  REST架构是针对Web应用而设计的,其目的是为了降低开发的复杂性,提高系统的可伸缩性。REST提出了如下设计准则:

  网络上的所有事物都被抽象为资源(resource);

  每个资源对应一个唯一的资源标识符(resource identifier);

  通过通用的连接器接口(generic connector interface)对资源进行操作;

  对资源的各种操作不会改变资源标识符;

  所有的操作都是无状态的(stateless)。

  使用REST架构

  对于开发人员来说,关心的是如何使用REST架构,这里我们来简单谈谈这个问题。REST不仅仅是一种崭新的架构,它带来的更是一种全新的Web开发过程中的思维方式:通过URL来设计系统结构。REST是一套简单的设计原则、一种架构风格(或模式),不是一种具体的标准或架构。REST有很多成功的使用案例,著名的Delicious和Flickr都提供基于REST风格的API使用,客户端调用也极其方便,下面是我用ASP写的一个很简单的REST举例,从中可以看出REST是多么的简单易用。

  客户端代码:
Private Function httpGet(url, method, data)
    Dim xmlhttp
    Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url + "?" + data, False
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader "Content-Length", Len(data)
    xmlhttp.send (Null)
    If (xmlhttp.Status = 200) Then httpGet = xmlhttp.responseText
    Set xmlhttp = Nothing
End Function

Private Function httpPost(url, method, data)
    Dim xmlhttp
    Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url, False
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader "Content-Length", Len(data)
    xmlhttp.send (data)
    If (xmlhttp.Status = 200) Then httpPost = xmlhttp.responseText
    Set xmlhttp = Nothing
End Function

Private Function httpPut(url, method, data)
    Dim xmlhttp
    Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url, False
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader "Content-Length", Len(data)
    xmlhttp.send (data)
    If xmlhttp.Status >= 400 And xmlhttp.Status <= 599 Then
        response.write " Error Occurred : " & xmlhttp.Status & " - " & xmlhttp.statusText
    Else
        response.write xmlhttp.responseText
    End If
    If (xmlhttp.Status = 200) Then httpPut = xmlhttp.responseText
    Set xmlhttp = Nothing
End Function

Private Function httpDelete(url, method, data)
    Dim xmlhttp
    Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url + "?" + data, False
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader "Content-Length", Len(data)
    xmlhttp.send (Null)
    If xmlhttp.Status >= 400 And xmlhttp.Status <= 599 Then
        response.write " Error Occurred : " & xmlhttp.Status & " - " & xmlhttp.statusText
    Else
        response.write xmlhttp.responseText
    End If
    If (xmlhttp.Status = 200) Then httpDelete = xmlhttp.responseText
    Set xmlhttp = Nothing
End Function

response.write httpPost("http://localhost/rest/service.asp", "POST", "do=POST")
response.write httpGet("http://localhost/rest/service.asp", "GET", "do=GET")
response.write httpPut("http://localhost/rest/service.asp", "PUT", "do=PUT")
response.write httpDelete("http://localhost/rest/service.asp", "DELETE", "do=DELETE")

服务端代码:
Response.Write Request.ServerVariables("REQUEST_METHOD")
If (Request.ServerVariables("REQUEST_METHOD")="GET") Then
 Response.Write "DO GET" + Request("do")
ElseIf (Request.ServerVariables("REQUEST_METHOD")="POST") Then
 Response.Write "DO POST" + Request("do")
ElseIf (Request.ServerVariables("REQUEST_METHOD")="PUT") Then
 Response.Write "DO PUT" + Request("do")
ElseIf (Request.ServerVariables("REQUEST_METHOD")="DELETE") Then
 Response.Write "DO DELETE" + Request("do")
End if


需要注意的是,IIS服务器默认是不支持ASP文件的PUT和DELETE操作,默认会返回“403 - Forbidden”错误,因此需要修改IIS的设置,修改方法是:管理根据-IIS信息服务器-网站-属性-主目录-应用程序配置-配置-映射,选择ASP - 编辑 - 修改为全部动作。

  关于更多关于REST方面的知识,建议阅读《RESTful Web Services》这本书。
分享到:
评论

相关推荐

    Java+restful+Web+Service实战

    Java RESTful Web Service实战是Java开发领域中一个重要的实践教程,它主要涵盖了使用Java技术和RESTful架构风格来创建高效、可扩展的网络服务。REST(Representational State Transfer)是一种网络应用程序的设计...

    RESTful Web Service实现转账

    在现代的Web应用程序开发中,RESTful Web Service已经成为构建分布式系统和服务之间通信的重要方式。本文将深入探讨如何利用RESTful架构来实现转账业务,同时关注事务处理和并发控制这两个关键领域。 首先,让我们...

    基于RESTful Web Service的数据资源交换系统设计与实现.pdf

    综上所述,基于RESTful Web Service的数据资源交换系统设计与实现,通过采用RESTful架构、JSON作为数据交换格式,以及Spring Cloud作为微服务框架,可以有效地降低系统开发复杂度,提高系统可扩展性和数据资源管理...

    RESTful Web Service Demo

    RESTful Web Service是一种基于HTTP协议,以资源为中心的Web服务设计风格。这种风格强调通过统一接口,使用HTTP方法(GET、POST、PUT、DELETE等)来实现对网络资源的操作,从而实现客户端与服务器之间的交互。在...

    Java RESTful Web Service实战.pdf

    Java RESTful Web Service是现代Web应用开发中的一个重要概念,它基于Representational State Transfer(表述性状态转移)架构原则,提供了一种轻量级、高效且易于理解和实现的接口设计方式。在本PDF教程《Java ...

    JAX-RS方式的RESTful Web Service开发

    RESTful Web Service是一种基于HTTP协议的、无状态的、客户端-服务器交互模式,它利用HTTP方法(GET、POST、PUT、DELETE等)来实现对资源的操作。JAX-RS是Java API for RESTful Web Services的简称,它是Java平台上...

    RESTful Java Web Services

    在IT行业中,Web服务是构建分布式系统的关键技术之一,RESTful Java Web Services是现代Web开发中的一个重要概念。本文将深入探讨REST(Representational State Transfer)架构风格及其在Java中的实现,特别是与...

    2018最新谷歌浏览器RESTful Web Service离线版包含definitions.json

    RESTful Web Service是一种基于HTTP协议的软件架构风格,用于构建可交互的、分布式的Web应用程序。这种服务通常使用GET、POST、PUT、DELETE等HTTP方法来操作资源,以实现数据的增删查改。 “definitions.json”文件...

    使用Java创建RESTful Web Service - ImportNew1

    使用Java创建RESTful Web Service 在本文中,我们将讨论如何使用Java创建RESTful Web服务。REST(Representational State of Resource)是一种架构风格,它于2000年由Roy Fielding博士提出。RESTful Web服务是一种...

    cxf3.1.4发布restful风格的web service

    RESTful风格的Web服务是现代互联网应用程序中广泛采用的一种设计模式,它强调资源的表述状态转移(Representational State Transfer)。Apache CXF是一个开源的Java框架,它支持多种Web服务标准,包括SOAP和RESTful...

    解析Restful Web Service架构

    Web服务架构可以分为两大类:RPC (Remote Procedure Call) 风格和服务端API采用RESTful风格。 - **RPC风格**:在这种风格中,每个服务调用都是通过POST方法完成的,并且所有的方法调用都会携带同样的URI。这种方式...

    解析Restful Web Service 架构

    ### 解析Restful Web Service架构 #### 一、HTTP协议基础 HTTP(HyperText Transfer Protocol)是一种基于文档的协议,用于客户端与服务器之间的通信。它规定了一套标准的请求和响应格式,使得不同系统间的交互...

    基于CXF的RESTful Web Service访问服务研究.pdf

    在现代开发中,RESTful风格因其简单性和易用性而成为一种流行的Web服务架构设计风格。REST由Roy Thomas Fielding在2000年的博士论文中首次提出,它定义了一组架构约束条件和原则,并且与具体的实现语言无关,可以...

    使用Java创建RESTful Web Service

    在IT行业中,RESTful Web Service是一种广泛采用的网络应用程序接口(API)设计风格,它基于Representational State Transfer(表述性状态转移)原则。本教程将深入讲解如何使用Java语言来创建RESTful Web Service。...

    MyEclipse下的Restful Web Service的Demo

    【标题】"MyEclipse下的Restful Web Service的Demo"是一个示例项目,展示了如何在MyEclipse集成开发环境中创建和使用RESTful Web服务。REST(Representational State Transfer)是一种软件架构风格,常用于构建Web...

    SOAP webserivce 和 RESTful webservice 对比及区别

    SOAP Web服务和RESTful Web服务是两种常见的Web服务交互方式,它们在设计理念、协议复杂度、数据格式和操作方式等方面存在显著的区别。 首先,SOAP(简单对象访问协议)是一种基于XML的协议,它允许不同系统之间的...

    《Java Restful Web Service实战》源代码.zip

    Restful Web Service是一种基于HTTP协议构建的Web服务,它遵循REST(Representational State Transfer,表现层状态转移)架构约束,以简洁、可扩展的方式提供了丰富的网络应用接口。这种服务设计风格使得API易于理解...

    RESTful Web Service Primer

    # RESTful Web Service Primer ## 什么是REST? REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于客户端与服务器之间的交互模式。REST架构风格最初由Roy Fielding在其博士...

    编写基于.net的WEB SERVICE.rar

    随着Web的发展,.NET框架也推出了Web API,它更适合RESTful风格的Web服务,提供了更灵活的数据交换格式,如JSON,适用于现代Web应用。 十、安全性考虑 在部署Web Service时,应考虑安全因素,如身份验证、授权、...

Global site tag (gtag.js) - Google Analytics