`
禹爸爸
  • 浏览: 87400 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

RESTful Web API中的Http协议语义

阅读更多

术语

在讲Http协议语义之前,我们先讲两个术语:资源资源表述

资源(Resource)

在REST的世界中,每种事物,比如一个产品、一个用户或是一个网页都被视为资源(Resource)。

资源表述(Representation of the resource

当浏览器为一个资源发送了HTTP请求后,服务器会发送一个文档作为回应,通常会是一个HTML文档,又或是图片、视频等。不论服务器返回了什么文档,我们都将这个文档称为资源表述(representation of the resource)。

Http语义协义

Http定义了8种不同的类型消息,在RESTful中常用到的有以下几种:

POST

基于给定的表述信息,在当前资源的下一级创建新的资源。

服务器对POST请求最常见的响应码是201(created),告之客户端资源创建成功;或是202(accepted),这表示服务打算按照提供的表述信息来创建一个资源,但是现在还没有真正的创建完成。

DELETE

销毁一个资源。

当客户端想要删除一个资源时,可以发送一个DELETE请求。服务器返回的响应码是204(no content),表示删除成功。如果试图GET一个不存在的资源,服务器会返回错误的响应码404(not found)。

DELETE请求有一个重要的属性:它是幂等的。所谓幂等,就是发送多次请求对资源状态的影响和发送一次请的影响是一样的

幂等性是一个很有用的特性,因为互联网不是一个可靠的网络,假设我们发送了一个DELETE请求,然后连接超时了,我们没有收到响应信息,所以我们无法得知资源是否被正确地删除了,但是我们可以利用DELETE请求的幂等性特性,再次发送DELETE请求并不断重试直到收到服务器响应为止。因为多次执行DELETE请求并不比只执行一次DELETE请求造成多的影响。

PUT

用给定的表述信息替换资源的当前状态。

客户端一般通过GET请求获取资源表述,然后对其进行修改,最后将修改后的表述作为PUT请求的负载数据发送回服务器,修改完成后,服务器返回200或是204响应码。

PUT请求也是幂等的。

GET

获取资源的某个表述(一个资源可以有多个表述)。

客户端通过发送GET请求来获取某个URL所标识的资源表述。服务器以application/vnd.collection+json格式返回资源表述。GET请法语最常见的响应码是200(OK)。

GET被定义为安全的HTTP方法,这是因为向服务器发送一条或是多条GET请求对资源的影响和没有发GET请求一样,不会对既有资源有作何影响。安全方法都是幂等的

 

以上四个协议对应着数据库中的增(Insert)删(delete)改(update)查(select)操作。

下面两个方法是客户端在分析研究API的时候经常使用到的

HEAD

获取服务器发送过来的头信息(不含资源表述信息)。

HEAD请求和GET请求一样,是安全方法,对HEAD请求最简单的理解就是轻量级别的GET请求,因为服务器只返回头信息,不需要返回资源表述信息。

用HEAD请求来代替GET请求,不会节约作何时间,但可以节省带宽的使用。

OPTIONS

获取这个资源所能响应的HTTP方法列表。

OPTIONS请求是HTTP的原生探索机制。一个OPTIONS请求的返回结果包含这个资源所支持的所有HTTP方法,如GET/PUT/DELETE/POST等。

 

分享到:
评论

相关推荐

    WebApi和访问WebApi两个项目(更新过)

    WebApi是Microsoft为构建RESTful服务提供的一种框架,主要用于创建HTTP服务,这些服务可以被各种客户端,如浏览器、移动设备或桌面应用所调用。在本项目中,我们有两个主要部分:WebApi项目和访问WebApi的项目。这两...

    restful api guidelines

    这遵循了HTTP协议的语义,提高了API的可理解性。 3. **状态码**:使用HTTP状态码来反馈请求的结果,如200(成功)、404(未找到)、401(未经授权)等,以提供明确的反馈信息。 4. **URI统一**:URI(Uniform ...

    RESTful API设计基础知识

    RESTful API设计是构建Web服务的关键技术,遵循一套基于HTTP协议的规范,旨在提供高效、分布式的系统架构。本文将深入探讨RESTful API设计的基础知识,包括其核心概念、原则和最佳实践。 REST(Representational ...

    .Net Core RESTful或WebAPI MVC Web应用程序

    在.NET Core中集成WebAPI,我们可以构建RESTful服务,处理HTTP请求并返回JSON或XML格式的数据。WebAPI支持各种HTTP动词,如GET、POST、PUT、DELETE,这与RESTful原则相吻合。此外,WebAPI还提供了模型绑定、验证和...

    RESTful API 设计最佳实践1

    这意味着API应使用HTTP协议的固有方法(GET、POST、PUT、PATCH和DELETE)来操作资源,这符合HTTP方法的语义。资源通常由名词表示,如“票”、“用户”和“小组”,而不是动词,避免暴露实现细节。每个资源都有相应的...

    RESTful Web Services

    - **易于理解**:RESTful API的设计遵循HTTP协议本身的语义,使得开发者更容易理解和使用。 - **可伸缩性**:REST支持缓存机制,有助于减轻服务器负担,提高响应速度。 #### 分布式系统与REST 分布式系统是指由多...

    Web API的设计与开发 阅读计划-雨帆1

    书中不仅涵盖了 Web API 的基本概念、历史发展,还对 RESTful API 设计原则、HTTP 协议的应用以及 API 安全问题进行了详尽的讲解。 首先,书中第一章介绍了 Web API 的重要性和设计理念。1.1 节讲述了 Web API 的...

    restful-api-design-references:RESTful API设计参考文献列表,可帮助您更加彻底的了解REST风格的接口设计

    RESTful API设计是一种广泛应用于现代Web服务中的接口设计模式,其全称为Representational State Transfer(表述性状态转移)。这种设计风格强调简洁、无状态、基于标准的交互方式,以提高系统的可扩展性和可维护性...

    Spring Boot 构建一个 RESTful Web 服务

    Spring Boot 构建 RESTful Web 服务 Spring Boot 构建 RESTful Web 服务是当前最流行的一种互联网软件架构。REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,由 Roy Thomas Fielding ...

    Good for restful API

    该框架基于Mochiweb(一款用Erlang编写的Web服务器)构建,旨在帮助开发者轻松构建遵循HTTP语义的服务,同时避免了在业务逻辑中直接处理HTTP相关的复杂性。 ##### 原则 - **默认行为**:Webmachine实现了一些默认...

    后台调用Restful

    在.NET框架中,我们可以使用ASP.NET Web API来构建RESTful服务。这是一个专门用于构建HTTP服务的框架,它可以轻松地与各种客户端,包括浏览器和移动设备进行交互。Web API支持路由、模型绑定、过滤器等特性,使得...

    Restful资料(HTTP头详解)

    RESTful是一种基于HTTP协议的API设计规范,它遵循了一种特定的设计风格,目的是简化客户端与服务器的交互。RESTful的核心思想是使用HTTP方法来表示客户端发出的数据操作指令,这些HTTP方法通常对应于CRUD(创建、...

    微博情感分析,使用flask制作restful api,毕业设计衍生项目.zip

    这个项目的完成可以帮助学生和开发者了解如何将NLP任务集成到实际Web应用中,同时学习Flask框架和RESTful API的设计规范,提升全栈开发能力。通过此项目,你可以掌握从数据获取到Web服务部署的完整流程,对于提升...

    webapi接口接入文档1

    【WebAPI接口接入文档1】是科大讯飞(iFlytek)提供的关于如何接入RESTful服务接口的详细指南,主要用于帮助开发者快速理解并实现与AIUI开放平台的交互。此文档适用于那些希望利用科大讯飞的语音识别、自然语言处理等...

    海康摄像头

    1. RESTful API:通常,海康摄像头提供了REST(Representational State Transfer)风格的API,允许开发者通过HTTP协议调用摄像头的各种功能。这些API可能包括获取实时视频流、控制摄像头移动、调整参数等。 2. JSON...

    metacurate-lexicon:一种Web服务,通​​过Web GUI和RESTful API公开语义相似性搜索

    这是一个python / Flask Web应用程序,它公开接口(Web GUI和RESTful API)以在词典中查找语义相似(多词)的术语,以及将原始文本适当地预处理为句子和术语的功能令牌。 词典中的单词嵌入是由gensim word2vec实现...

    restful连通path路径的访问application

    在IT行业中,RESTful是一种广泛应用于Web服务设计的架构风格,它强调了资源的表述状态转移(Representational State Transfer)。RESTful API设计的核心是通过HTTP方法(GET, POST, PUT, DELETE等)来操作资源,使得...

    Restful 接口风格设计 原版

    Restful接口风格设计是现代Web服务开发中广泛采用的一种API设计规范,其核心思想是通过HTTP方法(GET、POST、PUT、DELETE等)与资源URI(Uniform Resource Identifier)结合,来实现对网络资源的无状态操作。...

    restful-webService

    RESTful Web Service是一种基于HTTP协议的轻量级Web服务架构风格,它强调资源的状态转移,使得Web服务更符合Web的语义。在这个项目中,"restful-webService" 提供了一个框架,用于构建RESTful风格的服务,包括客户端...

Global site tag (gtag.js) - Google Analytics