轻量级的Web服务——RESTful Web Services

    提起Web Service,自然会想到基于SOAP的Web Service,令人生畏的是其服务提供者、服务消费者开发起来都不容易。那么有没有更简单的提供Web服务的方法呢?基于REST的Web服务就是一种轻量级的Web服务,开发方法和Web应用程序开发没有太大差别,通过JavaScript就可以访问这种Web服务。
    REST(Representational State Transfer),中文有很多翻译方法,例如状态表述转移、代表性状态传输、表述性状态转移等等,看了这些中文翻译更是让人一头雾水,那就忘掉中文翻译名称吧,我们能够知道是个什么东东就可以了。
    基于REST的Web服务是什么呢?说的简单一点,就是基于HTTP协议的Web服务,就像通过一个URI获取html一样,Web服务也是通过一个URI来标识和定位的,使用这个Web服务时,使用HTTP协议访问这个URI就可以得到服务提供的结果。
    如果说的更加专业一点,就是“REST定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的Web服务,包括使用不同语言编写的客户端如何通过HTTP处理和传输资源状态。”。下面解释一下REST的几个原则,并与一般的Web应用系统作一个对比。
    1、显式地使用HTTP方法。对资源的操作主要包括创建、读取、更新和删除(create, read, update, and delete,CRUD),对于不同的操作要使用相应的HTTP方法:
  • 创建使用POST方法
  • 读取使用GET方法
  • 更新使用PUT方法
  • 删除使用DELETE方法
    这与一般的Web应用系统没有太大差别。
    2、无状态。HTTP协议本身就是无状态的,一般的Web应用系统也是无状态的,在一些特殊的情况下(如用户认证)会扩展一下实现类似有状态的环境,基于REST的Web服务也不例外,总不能每次调用服务都要登陆一次吧。
    3、标识资源的URI。在一般的Web应用系统,获取特定资源的时候一般会在URI后面附加?artical_id=10这样的参数,如http://192.168.0.20:8080/getArtical.jsp??artical_id=10。REST要求URI是静态的,需要形如http://192.168.0.20:8080/articals/10这样的URI。一些制订REST的URI的指导原则如下:
  • 隐藏服务器端脚本技术文件扩展名(.jsp、.php、.asp)——如果有的话,以便您能够移植到其他脚本技术而不用更改URI。
  • 将所有内容保持小写。
  • 将空格替换为连字符或下划线(其中一种或另一种)。
  • 尽可能多地避免查询字符串。
  • 如果请求URI用于部分路径,与使用 404 Not Found 代码不同,应该始终提供缺省页面或资源作为响应。
  • URI还应该是静态的,以便在资源发生更改或服务的实现发生更改时,链接保持不变。
    从这里可以看到,REST尽力避免Web服务与使用的平台、开发技术相关联,增强服务的可移植性。
    4、Web服务返回的资源表示形式。一般Web应用系统返回的是html格式的文本,由浏览器负责解析。而基于REST的Web服务就不一样了,服务器返回的文本就给程序看的,由程序获取后作出处理,程序易于识别格式化的数据,考虑到客户端的多种多样,REST服务返回的格式一般是XML、JSON等格式,以提高资源的通用性。当然,服务器也可以提供多种格式以供选择,由客户端决定需要什么格式的资源。
    由此可以看到,基于REST的Web服务并没有太多新技术,使用开发Web应用系统的方法就可以开发出基于REST的Web服务。而且,使用这样的Web服务也很简单,通过AJAX就可以访问。正是因为这种简单性,受到开发人员的青睐,已获得广泛使用,如很多网站的Open API就是应用的这种技术。


发布了35 篇原创文章 · 获赞 1 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章