restful api接口设计

19 篇文章 0 订阅
订阅专栏

技术由来:

互联网早期,页面请求和并发量不高,且移动端未盛行时对接口要求不高,使用动态页面(jsp)就能满足绝大多数的使用需求。但是随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的动态页面由于低效率而渐渐被HTML+JavaScript(Ajax)的前后端分离所取代,并且安卓、IOS、小程序等形式客户端层出不穷,客户端的种类出现多元化,而客户端和服务端就需要接口进行通信,但接口的规范性就又成了一个问题:

所以一套结构清晰、符合标准、易于理解、扩展方便让大部分人都能够理解接受的接口风格就显得越来越重要,而RESTful风格的接口(RESTful API)刚好有以上特点,就逐渐被实践应用而变得流行起来。

使用resetful设计的接口特点:看Url就知道要什么资源数据,看http method就知道进行什么操作!

所以RESTful API就是一套接口设计风格,用来规范多种形式的前端和同一个后台的交互方式

 

使用场景:

前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。后端处理数据并以JSON格式传输出去,定义这样一套统一的接口,在web,ios,android三端都可以用相同的接口,节约开发成本以及便于同一调试。

 

 

区分REST和RESTful :

REST是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移。字面理解太复杂了,先简单理解为:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

REST描述的是在网络中client和server的一种交互形式;REST并没有一个明确的标准,而更像是一种设计的风格,满足这种设计风格的程序或接口我们称之为RESTful(从单词字面来看就是一个形容词)。所以RESTful API 就是满足REST架构特征的接口。

 

 

 

REST架构特征和设计规范:

 

  • URI指向资源:使用URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。URI包括URL和URN,在这里更多时候可能代指URL(统一资源定位符)。RESTful是面向资源的,每种资源可能由一个或多个URI对应,但一个URI只指向一种资源。注意:使用名词的复数表示一个资源集合,如api.domain.com/users;使用斜线“/”用来表示资源之间的层次关系,如api.domain.com/users/1234/orders;URI 中应尽量使用小写字母,不实用下划线;URL末尾不应包含斜线“/”;

 

  • 统一接口: 通过一定原则设计接口降低耦合,简化系统架构,这是RESTful设计的基本出发点。对资源的操作包括获取、创建、修改和删除,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。换言而知,使用RESTful风格的接口但从接口上你可能只能定位其资源,但是无法知晓它具体进行了什么操作,需要具体了解其发生了什么操作动作要从其HTTP请求方法类型上进行判断。具体的HTTP方法和方法含义如下图1,这样就统一了数据操作的接口。

        非RESTful风格的API中,我们通常使用GET请求和POST请求完成增删改查以及其他操作,查询和删除一般使用GET方式请求,更新和插入一般使用POST请求。从请求方式上无法知道API具体是干嘛的,所有在URL上都会有操作的动词来表示API进行的动         作,例如:query,add,update,delete等等。而RESTful风格的API则要求在URL上都以名词(推荐用复数)的方式出现,从几种请求方式上就可以看出想要进行的操作,这点与非RESTful风格的API形成鲜明对比。在谈及GET,POST,PUT,DELETE的时候,就必须提一下接口的安全性和幂等性,其中安全性是指方法不会修改资源状态,即读的为安全的,写的操作为非安全的。而幂等性的意思是操作一次和操作多次的最终效果相同,客户端重复调用也只返回同一个结果。

       

       上述四个HTTP请求方法的安全性和幂等性如下:

      

 

      举例子:说了这么多,到底RESTful长什么样子的呢?

  •   GET:http://www.xxx.com/source/id 获取指定ID的某一类资源。
  •   例如GET:http://www.xxx.com/friends/123表示获取ID为123的会员的好友列表。如果不加id就表示获取所有会员的好友列表。
  •   POST:http://www.xxx.com/friends/123表示为指定ID为123的会员新增好友。其他的操作类似就不举例了。

     如果一个操作无法对应到资源的某个操作上,此时可以适当地在URI中包含动词,但依然应该基于一个资源的标识符。例如:DELETE /users/1234/set-admin

 

  • 无状态。服务器不能保存客户端的信息, 每一次从客户端发送的请求中,要包含所有必须的状态信息,会话信息由客户端保存, 服务器端根据这些状态信息来处理请求。 当客户端可以切换到一个新状态的时候发送请求信息, 当一个或者多个请求被发送之后, 客户端就处于一个状态变迁过程中。 每一个应用的状态描述可以被客户端用来初始化下一次的状态变迁。

 

  • 状态码和返回数据

       服务端处理完成后客户端也可能不知道具体成功了还是失败了,服务器响应时,包含状态码返回数据两个部分。

      

       

 

{  //响应格式
    status:0,

    data:{}||[],

    msg:’’
}

   

  • 过滤信息:可以使用过滤信息进行筛选、搜索或分页查询等

       

 

  • 可缓存性(Cacheability) :服务端需回复是否可以缓存以让客户端甄别是否缓存提高效率。
  • 版本号:可以将API的版本号放入URL。GET:http://www.xxx.com/v1/friend/123。或者将版本号放在HTTP头信息中。

 

 

总结:

RESTful风格的API 固然很好很规范,但大多数互联网公司并没有按照或者完全按照其规则来设计,因为REST是一种风格,而不是一种约束或规则,过于理想的RESTful API 会付出太多的成本。

比如RESTful API也有一些缺点

  • 比如操作方式繁琐,RESTful API通常根据GET、POST、PUT、DELETE 来区分操作资源的动作,而HTTP Method 本身不可直接见,是隐藏的,而如果将动作放到URL的path上反而清晰可见,更利于团队的理解和交流。
  • 并且有些浏览器对GET,POST之外的请求支持不太友好,还需要特殊额外的处理。
  • 过分强调资源,而实际业务API可能有各种需求比较复杂,单单使用资源的增删改查可能并不能有效满足使用需求,强行使用RESTful风格API只会增加开发难度和成本。

所以,当你或你们的技术团队在设计API的时候,如果使用场景和REST风格很匹配,那么你们可以采用RESTful 风格API。但是如果业务需求和RESTful风格API不太匹配或者很麻烦,那也可以不用RESTful风格API或者可以借鉴一下,毕竟无论那种风格的API都是为了方便团队开发、协商以及管理,不能墨守成规。

 

参考学习文章:

https://www.toutiao.com/i6693727878158221836/

https://www.toutiao.com/a6902604637149692428/

 

RESTful API接口设计指南
AI天才研究院
09-09 2055
作者:禅与计算机程序设计艺术 1.简介 REST(Representational State Transfer)即表述性状态转移,是一个Web服务的架构风格,旨在通过一组简单的规则来定义如何实现Web服务,使客户端开发人员能够更简单、快速地开发出可靠、可伸缩的Web应用。它主要倡导使用HTTP协议来传
Restful API接口设计
weixin_39327556的博客
05-28 411
API是什么 API简称接口,就是预先定义的函数,目的是让应用程序或者开发人员具有访问指定网络资源的能力,而又无需关心关心访问的源码,或理解内部工作机制的细节。 Restful是什么 不同的开发者对获取资源的接口设计,呈现出多战多样的接口,为了是接口具有规范性,能够要很好的可读性以及移植性,Restful风格就此产生。 REST 是一种架构风格,表示的是Representational State Transfer 表现状态转移,客户端通过访问url来...
Restful API 设计
Mongoose House
06-07 849
REST(Representational State Transfer) 是 Roy Fielding 博士在2000年他的博士论文「Architectural Styles and the Design of Network-based Software Architectures(PDF)」中提出来的一种软件架构风格。REST 服务与早前 Web Service 的 SOAP 和 XML-RPC 协议对比来讲更加简洁,现在越来越多的 Web 服务开始采用 REST 风格设计和实现。 Restful
RESTful API设计
Just Do It
07-02 772
一、RESTful API简介 1.1 RESTfulAPI是什么 RESTful API全称是Resource Representational State Transfer(资源表述性状态转移)。 R:Resource 资源。例如:user、role、gist、issue、service、route E:Representational 表述性。数据的表现形式,例如:JSON、XML、CSV、IMG等 S:State 状态。资源的状态,例如:创建、更新等状态 T:Transfer 转移.
Java中的Web服务开发:RESTful API的最佳实践
最新发布
微赚淘客开发者博客
09-17 388
资源模型应该简洁且专注于表示资源的状态。// 构造器、getter和setter开发高质量的RESTful API是Java Web开发中的一项重要任务。通过使用Spring Boot、合理设计资源模型、处理HTTP状态码和错误、实现安全性、优化性能、添加分页和过滤功能、编写文档和示例,可以创建易于使用、安全且高效的API。本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!
RESTful API 接口设计指南
流华追梦的专栏
11-30 1857
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他终端设备等)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现“API First”的设计思想。RESTful API 是目前比较成熟的一套互联网应用程序的 API 设计理论。
RESTful API 设计
silence_xiao的博客
08-02 524
今天,我将介绍RESTful API设计细节,探讨如何设计一套合理、好用的API。我的主要参考了两篇文章(1,2)。 一、协议 API与用户的通信协议,总是使用HTTPs协议。 二、域名 应该尽量将API部署在专用域名之下。     https://api.example.com   如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。  ...
理解 RESTful 风格的 API(转鲁斯菲尔)
qq_43510643的博客
11-19 984
# 理解 RESTful 风格的 API # 概述 2000 年,Roy Thomas Fielding 博士在他那篇著名的博士论文《Architectural Styles and the Design of Network-based Software Architectures》中提出了几种软件应用的架构风格,REST 作为其中的一种架构风格在这篇论文的第5章中进行了概括性的介绍。 REST 是“REpresentational State Transfer”的缩写,可以翻译成“表现状态转换”,但是
RESTful API接口通用完整规范_V1.doc
06-19
REST它是一种使用URL来定位资源,使用HTTP请求描述操作的Web服务规范,本资源包含RESTful简介、设计原则、通用说明、规范细则、接口管理说明。
RestFul API接口
javaYanKang的博客
10-25 921
RestFul API是最近项目组开发过程中遇到的一种开发风格。本文主要介绍在日常开发过程中对于RestFul API的理解。一、RestFul API是什么?RestFul API个人认为是一种设计风格、开发风格;REST全文是:Representational State Transfer;翻译后为:表现层状态转换。是针对于前后端分离的分布式开发场景应运而生的。RestFul API提供了一种设计风格,开发风格。
SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验
04-07
描述:本实验使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验,涵盖了数据库设计、 Maven依赖管理、Restful API和WebService API的实现等方面。 标签:spring boot、mybatis、...
API接口RESTful设计
何哥的博客
03-26 2802
前言:在移动互联网、分布式和微服务盛行的今天,现在好多大点的项目都会采用的微服务框架,前后端分离方式。前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟,可以进行移动端跨平台开发,也可以通过node.js写服务端的Controller。 一般系统的大致整体架构图如下: 需要说明的是,这个架构也太简单了吧,什么网关、Redis缓存、MQ消息中间件都没有。因为这篇主要介绍的是API接口,所以我们聚焦点,其他的模块小伙伴们自行去补充。 1、前后端接口交互 前端和后端进
RESTful 接口设计
weixin_44512485的博客
08-07 616
REST 是 Representational State Transfer 的缩写,如果一个架构符合 REST 原则,就称它为 RESTful 架构。RESTful 架构可以充分的利用 HTTP 协议的各种功能,是 HTTP 协议的最佳实践。RESTful API 是一种软件架构风格、设计风格,可以让软件更加清晰,更简洁,更有层次,可维护性更好。
RESTful API 设计最佳实践:打造高性能接口
LiamHong_的博客
06-04 1015
根据 REST 的说法,DELETE 应该是幂等的——如果你一次删除一个资源,然后再次调用 DELETE 该资源,它不应改变任何东西。当你过度抓取时,你的调用导致的数据传输比必要的更大,这是带宽浪费。你应该始终寻找简化实现的方法。有时,用一个特殊的 HTTP 头来控制你的 API 的响应格式可能是一个比构建另一个 API 并称之为 v2 更简洁的解决方案。此外,由于缓存是 HTTP 规范的一部分,很多参与 HTTP 的东西都会知道如何缓存东西:浏览器,它们天生支持缓存,以及你和客户端之间的其他中间服务器。
RESTful API设计指南:构建高效、可扩展和易用的API
weixin_73588491的博客
07-20 3918
RESTful API(Representational State Transfer API),中文翻译过来可以表述为表述性状态转移,是一种基于HTTP协议的网络应用程序接口风格。它遵循REST架构风格的约束条件和原则,以资源为中心,使用标准的HTTP方法(如GET、POST、PUT、DELETE等)来执行操作。RESTful API强调简单性、可扩展性和可读性,使得不同系统之间的通信变得更加直观和高效。设计高质量的 RESTful API 是一个持续的过程。
RESTful API 设计指南
weixin_30872157的博客
04-04 85
简介 REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议...
RESTful API 设计最佳实践
fisher的博客
01-20 1795
RESTful API 设计最佳实践来源
restful接口设计
ZbyFt
07-27 254
1.RESTFUL: 是一种设计风格, 而不是一种标准, 诞生于2000年, Thomas Fielding 在论文<<架构风格与基于网络的软件架构设计>>提及到的. 指的是客户端和服务器的交互形式.在后台中体现的是接口设计!   2.REST的特点:     1. 具象的资源,也就是表现层, 比如: 客户端向服务器获取的资源(文字,图片,音频)     2...
如何设计出优秀的Restful API
架构师小秘圈
08-29 863
1 你一直在错误的使用http协议现在微服务真是火的一塌糊涂!大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务!而作为微服务之间通信的桥...
restful api 接口设计规范
11-30
RESTful API 是一种基于 HTTP 协议,通过 URI、HTTP 动词、HTTP 报文等方式来实现资源的增删改查等操作的一种 API 设计规范。其设计原则包括客户端-服务器、无状态、可缓存、统一接口等。具体来说,RESTful API设计应该遵循以下几个方面: 1. URI 设计:URI 应该清晰、简洁、易于理解,且应该使用名词而非动词来表示资源。 2. HTTP 动词:HTTP 动词应该与资源的操作相对应,例如 GET 方法用于获取资源,POST 方法用于创建资源等。 3. HTTP 报文:HTTP 报文应该包含足够的信息来描述资源的操作,例如请求头中的 Accept 字段用于指定客户端接受的数据类型,响应头中的 Content-Type 字段用于指定服务器返回的数据类型等。 4. 资源的表现形式:资源应该以多种不同的表现形式呈现,例如 JSON、XML 等。 5. 超媒体:超媒体是 RESTful API 的一个重要特性,它通过在响应中包含链接来描述资源之间的关系,从而使客户端能够自动发现和访问相关资源。 以下是一个示例: 假设我们要设计一个 RESTful API 来管理用户信息,我们可以按照以下方式设计 URI: - 获取所有用户信息:GET /users - 获取指定用户信息:GET /users/{id} - 创建用户信息:POST /users - 更新指定用户信息:PUT /users/{id} 删除指定用户信息:DELETE /users/{id} 其中,{id} 表示用户的唯一标识符。
写文章

分类专栏

  • ES6 1篇
  • java 5篇
  • 计算机基础 17篇
  • nginx
  • 其他 19篇
  • electron 4篇
  • css&html&javascript 43篇
  • vue 36篇

最新评论

  • 解决vue的{__ob__: observer}取值问题

    六点的晨曦: 没有用,只是浅层的修改,有效方法参考这篇博客:https://juejin.cn/post/7206128269128581175

  • 解决vue的{__ob__: observer}取值问题

    weixin_52033658: 我也试过了没用

  • windows下mysql8.0-64的安装、完全卸载及注意事项(亲测),MySQL和SQL Server的简单区别

    abu71954145: 感谢你啦

  • vue2开发中$emit 、$on 、$once 、$off 的使用, vue中$root、$refs、$parent 的使用

    半个开心果: $off再加个demo就更好了

  • vue.nextTick()方法的使用详解(简单明了)

    达成869: this后面要变化,所以要先赋值给that

最新文章

  • ES6解构赋值
  • vue项目使用electron打包成桌面应用
  • React和Vue的Chrome扩展工具安装
2021年29篇
2020年7篇
2019年63篇
2018年34篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家老城玻璃钢雕塑加工厂家广东商场美陈招标吴忠玻璃钢雕塑制作哪里有玻璃钢雕塑厂家山东仿铜玻璃钢雕塑市场古朴的玻璃钢人物雕塑南昌玻璃钢雕塑哪家便宜小学校彩色玻璃钢雕塑商场气球美陈简报玻璃钢雕塑天壶流水原理上海步行街玻璃钢雕塑市场商丘镂空玻璃钢卡通雕塑济源玻璃钢镂空雕塑景区商场美陈包头玻璃钢雕塑生产厂家济南商场美陈费用玻璃钢仿真奶茶雕塑玉林商场美陈雕塑商场扶梯上空美陈布置金华玻璃钢卡通雕塑厂家批发云南优质校园玻璃钢景观雕塑长沙玻璃钢浮雕抽象景观雕塑商场美陈布置安装制作昆明玻璃钢门头雕塑宣城户外玻璃钢雕塑徐州阳江玻璃钢动物雕塑八路战士玻璃钢道具雕塑甘孜商场美陈济南玻璃钢雕塑摆件市场报价玻璃钢花盆里长蘑菇香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化