`
hideto
  • 浏览: 2682978 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读 RESTful Web Service 第二章

阅读更多
Chapter2,Writing Web Service Clients

Web Services Are Web Sites
Yahoo!提供了RESTful Web Service,用Ruby来调用该服务非常简单:
require 'open-uri'
require 'rexml/document'
require 'cgi'

BASE_URI = 'http://api.search.yahoo.com/WebSearchService/V1/webSearch'

def print_page_titles(term)
  term = CGI::escape(term)
  xml = open(BASE_URI + "?appid=restbook&query=#{term}").read
  document = REXML::Document.new(xml)
  REXML::XPath.each(document, '/ResultSet/Result/Title/[]') do |title|
    puts title
  end
end

print_page_titles(ARGV.join(' '))

Google则还是RPC风格的SOAP,不过最近貌似加上了Ajax风格的Web服务?
既然大家都发布了服务API,我要是使用自己的服务器假设一个伪搜索引擎岂不是很简单?不知道是否侵权哦?
RESTful Web Service非常简单,我们只需用某种编程语言的HTTP客户端库即可

Wrappers, WADL, and ActiveResource
What is WSDL?
WSDL stands for Web Services Description Language
WSDL is written in XML
WSDL is an XML document
WSDL is used to describe Web services
WSDL is also used to locate Web services
WSDL is not yet a W3C standard

What is SOAP?
SOAP stands for Simple Object Access Protocol
SOAP is a communication protocol
SOAP is for communication between applications
SOAP is a format for sending messages
SOAP is designed to communicate via Internet
SOAP is platform independent
SOAP is language independent
SOAP is based on XML
SOAP is simple and extensible
SOAP allows you to get around firewalls
SOAP will be developed as a W3C standard

SOAP类似于HTTP,都是底层通信协议,尤其是SOAP与HTTP、SMTP等绑定时。
而WSDL是描述Web服务的,我们针对一个WSDL文件调用一个Web服务时,底层通信就是遵守SOAP协议的

WADL(Web Application Description Language) is an XML-based file format that provides a machine-readble description
of HTTP-based web applications. These applications are typically RESTful web services.

WSDL用来描述基于SOAP协议的Web Service,而WADL用来描述RESTful Web Service

对不同的RESTful Web Service我们可以使用不同的Wrappers来封装以供调用(如上面的print_page_titles就是一个封装),但是这对不同的
RESTful Web Service不通用,所以WADL的出现就是为了对不同的RESTful Web Service提供一致的描述

ActiveResource则是针对Ruby on Rails写的RESTful Web Service的client端调用封装

del.icio.us: The Sample Application
del.icio.us的Web服务设计不是RESTful的,它始终使用GET方法,而且“add”和“rename”等操作都是嵌在URI中而不是使用HTTP方法

Making the Request: HTTP Libraries
构建Web服务客户端要求HTTP库至少满足以下特性:
支持HTTPS和SSL
支持GET、HEAD、POST、PUT和DELETE
支持程序员自定义PUT或POST请求的entity-body
支持程序员自定义请求的HTTP headers
支持HTTP应答的response code和headers
支持HTTP proxy

Ruby: rest-open-uri、net/http和net/https
Python: httplib2
Java: HttpClient
C#: System.Web.HTTPWebRequest
PHP: libcurl
JavaScript: XMLHttpRequest
Command Line: curl
ActionScript: XML
C: libwww、libcurl
C++: libcurl、cURLpp
Common Lisp: simple-http、AllegroServe
Perl: libwww-perl、Crypt:SSLeay

Processing the Response: XML Parsers
三种XMl Parsers
DOM: document-based、tree-style,读取整个XML文件后再开始解析,可以自由处理任何document内容
SAX: event-based、register callback methods,将document转变为一系列event,按顺序处理每个event,不能在处理中stop
Pull: event-based、一次处理一个event,需要时再pull下一个event,可以在任何时候stop

Ruby: REXML
Python: ElementTree
Java: javax.xml、Xerces、XMLPull
C#: System.Xml.XmlReader
PHP: XmlReader、DOM、SimpleXMl、DOMIT
JavaScript: responseXML
ActionScript: XML
C: Expat、libxml2
C++: Xerces-C++
Common Lisp: SXML
Perl: XML::XPath、XML::SAX::PurePerl、XML::LibXML::Reader

JSON Parsers: Handling Serialized Data
JSON的缺点:
不支持对象图和循环引用(使用外键来处理)
不支持类信息(附加类名)

Ruby: Object#to_json、JSON.parse
dojo: dojo.json

Clients Made Easy with WADL
作者是推荐使用WADL来描述RESTful Web Service,就像WSDL描述SOAP Web Service一样
不过像Rails的REST实现就只是用了简单的Object#to_xml来作为RESTful Web Service的描述,简单至极
分享到:
评论

相关推荐

    Building RESTful Web Services with .NET Core [PDF]

    ### 第二章:构建初始框架 —— 奠定应用基础 - **项目结构**:讲解如何组织代码,包括使用不同的命名空间来分离关注点。 - **依赖注入**:介绍如何在 .NET Core 中使用依赖注入容器,例如 Microsoft.Extensions....

    RESTful Web Services 中文版.rar

    RESTful Web Services中文版 1,3,4章 缺第二章和其他章节,源码网无色会在第一时间补齐,敬请关注本页。 本身完整目录: 目录 序.......................................I. --------------------------...

    Maven repository.part1

    Maven repository.part1 for Java RESTful Web Service实战第二章需要的Mave库

    Maven repository.part2

    Maven repository.part1 for Java RESTful Web Service实战第二章需要的Mave库

    JAVA WEB开发源码

    2. **第二章:Servlet** - 学习Servlet的基本概念,了解它如何处理HTTP请求和响应,以及Servlet生命周期和配置。 3. **第三章:JSP** - JSP(JavaServer Pages)用于动态网页生成,讲解JSP语法、EL(Expression ...

    第二章 Servlet 基础

    ### 第二章 Servlet基础 #### 一、Servlet概述 Servlet是一种用Java编写的服务器端程序,主要用于处理客户端的HTTP请求并生成动态Web内容。Servlet由Web服务器或应用服务器托管,并在其内部运行。它们的主要特点...

    Java Web服务:构建与运行(第2版)1-3-4章源代码

    在本资源中,我们关注的是Java Web服务的构建与运行,这是第二版的教材源代码,涵盖了第1至第4章的内容。Java Web服务是一种基于开放标准的技术,用于创建网络应用程序,尤其是那些能够通过互联网进行交互的应用。...

    第二章 使用SpringCloud框架实现一个微服务.pdf

    在本章中,我们将探讨如何使用SpringCloud框架构建一个微服务,特别是一个名为“Message-Service”的示例项目,该服务用于处理消息通知,如短信或电子邮件。这个项目旨在提供一个实践性的学习平台,以帮助理解Spring...

    ASP.NET_MVC_4_and_the_Web_API_-_Building_a_REST_Service_from_Start_to_Finish.pdf

    第二章深入探讨了 REST(Representational State Transfer)的概念。REST 是一种软件架构风格,旨在为网络应用程序提供简单而一致的接口。RESTful 设计的核心理念是资源为中心,通过使用 HTTP 协议中的标准方法(如 ...

    asp.net培训资料

    **第二章 C#程序设计基础** C#是ASP.NET的主要编程语言,具有现代、类型安全和面向对象的特点。学习C#的基础语法,包括变量、数据类型、控制结构、类和对象等,是理解ASP.NET的关键。本章将深入探讨这些基础知识,...

    ASP.NET开发实战宝典源代码(1~13章)

    2. **第二章:HTML和服务器控件** - HTML控件与服务器控件的区别 - 常用服务器控件,如Button、Label、TextBox等的使用 - 使用GridView显示和操作数据 - CSS样式和JavaScript在ASP.NET中的应用 3. **第三章:...

    基于WebService数据交换的研究和实现_第五章WSDES系统的设计和实现

    **基于WebService数据交换的研究和实现_第五章WSDES系统的设计和实现** 在信息化时代,数据交换成为了企业间、系统间协同工作的重要环节。WebService作为开放的Web标准,为跨平台、跨系统的数据交换提供了可能。本...

    SOA principles & practice(SOA课程课件 10章)

    ### 第二章:SOA架构模式 本章将探讨常见的SOA架构模式,如服务发现、服务代理、服务编排和服务聚合。这些模式帮助设计者在实践中有效地实现SOA,确保系统的可扩展性和灵活性。 ### 第三章:服务接口设计 这一章...

    武大JAVA教学课件J2EE课件JavaEE程序设计教程.zip

    2. **第二章**:Web基础,包括HTML、CSS和JavaScript,这些都是构建Web应用的基础,也是理解Java EE中Servlet和JSP的前提。 3. **第三章**:Servlet技术,介绍如何使用Servlet处理HTTP请求和响应,它是Java EE中...

    Webservice入门到精通

    #### 第二章:简单的Web服务 ##### SOAP概述 SOAP是一种基于XML的消息交换协议,用于在应用程序之间交换结构化信息。SOAP消息通常由四个部分组成:信封(Envelope)、头部(Header)、主体(Body)和故障(Fault)...

    j2ee.rar_The Professional

    第二章 JavaBean JavaBean是Java语言中的一种软件组件模型,主要用于构建可重用的UI组件。在J2EE环境中,JavaBean通常作为数据容器,存储和传递业务逻辑中的数据。本章将介绍JavaBean的生命周期、属性、方法和事件,...

    ASP.NET完全入门(初学者必备)

    第二篇“Web Form”深入介绍了使用Web Forms构建Web页面的技术。Web Forms是ASP.NET早期的核心,通过控件和事件驱动的方式模拟桌面应用程序的开发体验。这一章会讲述如何创建和使用服务器控件,处理用户交互,以及...

    Spring_3.x企业应用开发实战光盘源码_全

    光盘源码提供了从第二章到第十九章的所有示例代码,为学习者提供了实际操作和理解Spring框架的宝贵资源。 Spring框架是Java平台上的一个核心组件,它以依赖注入(Dependency Injection, DI)和面向切面编程(Aspect...

    软件设计师-软件设计篇视频.zip

    最后,第6章“WEB SERVICE及应用”涉及现代软件开发中的Web服务技术。本章将阐述Web服务的原理,如SOAP和RESTful API,以及如何使用XML和JSON进行数据交换。此外,还会探讨Web服务的集成、安全性和测试策略。 通过...

Global site tag (gtag.js) - Google Analytics