1.3 物联网与HTTP
在互联网领域HTTP是应用最为广泛的应用层协议,在物联网领域HTTP也是不可或缺的重要组成部分。HTTP的成功应用也影响了物联网领域的专用协议,如本书讨论的CoAP借鉴了HTTP在应用过程中大量的成功经验。熟练掌握HTTP对物联网领域的专项内容学习绝对大有帮助。
1.3.1 HTTP
HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或HTTPS请求的资源由统一资源标识符(Uniform Resource Identifier, URI)来标识。
HTTP采用客户端请求-服务器响应这样的工作模式。图1-5可以很好地描述这种请求/响应工作模式。通常客户端使用网页浏览器向服务器上指定端口(HTTP的默认端口为80)发起一个HTTP请求。服务器上存储着很多资源,如普通文本、HTML文本、图片或视频文件等。我们称这个应答服务器为源服务器。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或隧道等。HTTP采用TCP作为其传输层协议。通常,由客户端发起一个HTTP请求,创建一个到服务器指定端口的TCP连接。HTTP服务器则在那个端口监听客户端的请求,一旦收到请求,服务器将会向客户端返回状态,如“HTTP/1.1 200 OK”,以及具体的响应内容,如文本文件、HTML文件、图片和视频文件等。
图1-5 HTTP请求/响应工作模式
1.3.2 REST风格
REST(具象状态传输)是Roy Thomas Fielding博士于2000年在他的博士论文“Architectural Styles and the Design of Network-based Software Architectures”中提出来的一种Web软件架构风格。目前在三种主流的Web服务实现方案中,REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的Web服务开始采用REST风格设计和实现。REST是设计风格而不是标准,REST通常基于使用HTTP、URI、XML、JSON和HTML这些现有的协议和标准来实现。
REST风格具有以下特点:
1)资源一般由URI来指定。
2)无状态通信。
3)对资源的操作包括创建、获取、修改和删除等,这些操作对应HTTP的GET、POST、PUT和DELETE方法。
4)资源的表现形式可以是XML、JSON或HTML格式文件。
REST设计风格确实可以带来一些好处,这些好处使Web开发更加简洁且易于实现。REST风格可以使资源的定义方式更加清晰,Web服务器中常常保存很多不同类型的资源,这些资源需要通过某种约定俗成的方法加以编号,若遵循REST风格那么www.wsncoap.org中某个具体的资源可能采用这样的URI定义:http://wsncoap.org/resources/15。
REST风格使得对资源的操作变得更加简洁,若采用REST风格可充分利用HTTP中已经使用的各种“动词”—GET、PUT、POST和DELETE。GET代表获取、PUT代表更新、POST代表创建而DELETE代表删除,这就避免了在HTTP负载部分还需要创建诸如Create或Update这样“非标准”的动作。另外,HTTP中4个常用方法也对应数据库中的“增删改查”四大操作。表1-1可以很好地说明在REST风格指导下如何使用HTTP中的4个常用方法操作wsncoap.org/resources/15资源。
表1-1 REST风格资源操作说明