HTTP
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。
通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:
- GET: 向指定的资源发出“显示”请求。
- HEAD: 与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部份。
- POST: 向指定资源提交或修改数据
- PUT: 向指定资源位置上传其最新内容。
- DELETE: 请求服务器删除Request-URI所标识的资源。
- TRACE: 回显服务器收到的请求,主要用于测试或诊断。
- OPTIONS: 这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
- CONNECT: 是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。
REST
表现层状态转换(REST,英文:Representational State Transfer)是一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。允许用户端发出以统一资源标识符存取和操作网络资源的请求,而与预先定义好的无状态操作集一致化。
特点
- 资源是由URI来指定。
- 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
- 通过操作资源的表现形式来操作资源。
- 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
URI与URL
URI:统一资源标志符(Uniform Resource Identifier)
URL:统一资源定位符(uniform resource location)
URI就是在某一规则下能把一个资源独一无二地标识出来。URL是标识这个资源的唯一位置的。
URL提供了一种访问定位因特网上任意资源的手段,但是这些资源可以通过不同的方法(例如HTTP、FTP、SMTP)来访问,不管怎样,他都基本上由9个部分构成: <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fragment>
REST架构风格最重要的架构约束有6个
- 客户-服务器(Client-Server)
- 通信只能由客户端单方面发起,表现为请求-响应的形式。
- 无状态(Stateless)
- 通信的会话状态(Session State)应该全部由客户端负责维护。
- 缓存(Cache)
- 响应内容可以在通信链的某处被缓存,以改善网络效率。
- 统一接口(Uniform Interface)
- 通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。
- 分层系统(Layered System)
- 通过限制组件的行为(即每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。
- 按需代码(Code-On-Demand,可选)
- 支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展。