`
禹爸爸
  • 浏览: 80177 次
  • 性别: 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等。

 

分享到:
评论

相关推荐

    WSMO-Lite和HRESTS:Web服务和Restful API的轻量级语义注释-研究论文

    可公开访问的服务的预期增长可以从工具支持和自动化中受益匪浅,这两者都是语义Web服务(SWS)框架的重点,特别是解决服务发现,组合和执行的问题。 作为第一个SWS标准,World Wide Web Consortium在2007年产生了一...

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

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

    api.rss:RSS为RESTful。 此服务使您可以将RSS feed转换为很棒的API

    看一下React中围绕此API开发的一个小的搜索引擎。 欢迎反馈。 例 curl ' https://api.feedirss.com/search/entries?q=news ' | json_pp { " data " : [ { " id " : " 86b0f829-e300-4eef-82e1-82f34d03aff6 " , ...

    koa-rest-router:最强大,灵活且可组合的路由器,可轻松构建企业RESTful API!

    考阿休息路由器 最强大,灵活且可组合的路由器,可轻松构建企业RESTful API! 您可能也对感兴趣-最小功能的600字节客户端路由器。高光生产:准备用于可组合性:将多个资源和多个路由器分组灵活性:覆盖控制器和请求...

    abap-platform-refscen-flight:SFlight又回来了! 这是ABAP RESTful编程模型的飞行参考方案

    它支持所有类型的Fiori应用程序以及Web API的开发。 它基于技术和框架,例如用于定义语义丰富的数据模型的核心数据服务(CDS)和用于创建具有OData协议绑定的OData服务的服务模型基础结构以及用于自定义逻辑和基于...

    api.utils-2.0.0-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    http客户端:基于AmpPHP异步HTTP1.1 + 2客户端

    它的API简化了符合标准的HTTP资源遍历和RESTful Web服务的使用,而不会模糊基础协议。 该库手动实现基于TCP套接字的HTTP。 因此,它不依赖于ext/curl 。产品特点支持HTTP / 1和HTTP / 2安装该软件包可以作为依赖项...

    api-2.0.0-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    处理器:本体驱动的链接数据处理器和SPARQL后端服务器。 Apache许可证

    单个本体中的API逻辑 基于SPARQL的约束控制RDF输入质量 SPARQL端点和图存储协议端点 HTTP内容协商和缓存支持 遵循原则,为每个应用程序状态提供单独的RDF资源 AtomGraph对语义技术的直接使用导致了极端可扩展和灵活...

    restify:Node.js REST 开发的未来-开源

    一个 Node.js Web 服务框架,用于构建语义正确的 RESTful Web 服务,可用于大规模生产。 restify 针对内省和性能进行了优化,并用于地球上一些最大的 Node.js 部署。 一些业内最受尊敬的公司使用 restify 为地球上...

    最出色的节点模块的集合,这些模块将扩展node.js应用程序的功能。-Node.js开发

    使用Ctrl + F或Command + F搜索模块。 欢迎捐款。 其他很棒的列表,有用的jQuery插件有用的Wordpress插件...Restify-一个Node.js Web服务框架,经过优化,可构建语义正确的RESTful Web服务,以供大规模生产使用。 费阿

    zaqar:OpenStack消息传递(Zaqar)。 在opendev.org上维护的代码镜像

    该服务具有完整的RESTful API,开发人员可以使用它通过各种通信模式在其SaaS的各个组件与移动应用程序之间发送消息。 该API的基础是一个高效的消息传递引擎,该引擎在设计时考虑了可伸缩性和安全性。 其他...

    PaddleX-其他

    PaddleX GUI安装环境说明3、PaddleX Restful:使用基于RESTful API开发的GUI与Web Demo实现远程的深度学习全流程开发;同时开发者也可以基于RESTful API开发个性化的可视化界面前往PaddleX RESTful API使用教程...

    dataset-2.0.0-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    clerezza-6-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    typehandlerspace-0.2-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    clerezza-8-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    rdf.rdfjson-1.0.0-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    commons-reactor-0.2-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

    commons-reactor-0.1-source-release.zip

    通过提供工具来处理RDF数据,使用ScalaServerPages创建RESTful Web服务和Renderlet,Clerezza允许轻松开发语义Web应用程序。 内容根据W3C RDF规范存储为三元组。 这些三元组通过Clerezza的智能内容绑定(SCB)存储。...

Global site tag (gtag.js) - Google Analytics