前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >细说RESTful API之入门介绍

细说RESTful API之入门介绍

作者头像
编程随笔
发布2019-09-11 15:33:21
6220
发布2019-09-11 15:33:21
举报
文章被收录于专栏:后端开发随笔后端开发随笔

1. REST概述

REST(英文:Representational State Transfer,又称具象状态传输)是Roy Thomas Fielding博士于2000年在他的博士论文中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现。

要点及标准 - 需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,XML以及HTML这些现有的广泛流行的协议和标准。 - 资源是由URI来指定。 - 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。 - 通过操作资源的表现形式来操作资源。 - 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式,如:JSON。

REST架构风格最重要的架构约束有6个: * 客户-服务器(Client-Server):通信只能由客户端单方面发起,表现为请求-响应的形式。 * 无状态(Stateless):通信的会话状态(Session State)应该全部由客户端负责维护。 * 缓存(Cache): 响应内容可以在通信链的某处被缓存,以改善网络效率。 * 统一接口(Uniform Interface): 通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。 * 分层系统(Layered System):通过限制组件的行为(即每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。 * 按需代码(Code-On-Demand,可选): 支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展。

2. REST API

REST风格的软件架构,常常用于Web服务中。符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义: - 直观简短的资源地址:URI,比如:http://example.com/resources/。 - 传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。 - 对资源的操作:Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

总之,对于REST API的理解,主要包含如下几个方面: (1) 资源通过URI描述 (2) 通过json或xml描述数据对象或属性 (3) 使用HTTP方法进行消息传递,如: GET,POST,PUT,DELETE分别对应着对资源的获取,创建,更新,删除 (4) 在服务器端不保存交互客户端上下文信息,而由客户端保存会话状态

另外,规范的的REST API必须使用正确的HTTP状态码(这一点非常重要,涉及到REST API的规范性和可维护性),如: * 1XX - informational * 2XX - success * 3XX - redirection * 4XX - client error * 5XX - server error 更加详细的HTTP状态码请参考rfc2616,详见:https://tools.ietf.org/html/rfc2616。而且,必要的时候可通过HTTP消息头Accept和Content-Type描述传递的内容。

最后,REST API还应该进行版本管理

3. 总结

不像基于SOAP的Web服务,RESTful Web服务并没有“正式”的标准。这是因为REST是一种架构,而SOAP只是一个协议。 虽然REST不是一个标准,但大部分RESTful Web服务实现会使用HTTP、URI、JSON和XML等各种标准。

【参考】

https://zh.wikipedia.org/wiki/REST 维基百科,自由的百科全书 http://rest.elkstein.org/2008/02/what-is-rest.html Learn REST: A Tutorial https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm https://spring.io/understanding/REST Understanding REST http://www.infoq.com/cn/articles/understanding-restful-style 理解本真的REST架构风格 https://coyee.com/article/11302-good-practices-in-api-design API 设计的最佳实践 https://zhuanlan.zhihu.com/p/20034107 撰写安全合格的REST API http://geek.csdn.net/news/detail/201132?url_type=39&object_type=webpage&pos=1 RESTful API设计技巧经验总结

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档