简述RESTFul风格的API接口

目录

传统的风格API

 REST风格

谓词规范

 URL命令规范

避免多级URL

幂等

CURD的接口设计

REST响应

响应成功返回的状态码

 重定向

错误代码

客户端

服务器

RESTful的返回格式

返回格式


从上一篇文章我们已经初步知道了怎么在VS中创建一个webapi项目。这篇文章来探讨一下啊什么是RESTFult风格的API接口。

传统的风格API

加入要获取单个用户——>/User/GetUser

对用户进行更新——>/User/UpdateUser

删除用户——>/User/DeleteUser

然后我去查阅资料,发现接口文档都有一下特征

1、接口Url地址;

2、Post、Get请求方式

3、请求参数

4、返回参数

5、返回格式:Json、Xml、Text等。

如果不是团队开发,自己写一写其实也还好,只要看得懂就行。

但是团队开发,都会有一套规范。这套规范去约束了我们

1.使用Get、Add、Update、Delete开头用来命令API接口,表示获取、插入、更新、删除的操作。

2.携带参数指定返回的格式,?type=json表示返回json格式,?type=xml表示返回xml格式。等。

 REST风格

REST,即Representational State Transfer的缩写,翻译成中文”表现层状态转化。

 具体如下:

1)资源,每一个资源都有指定的URL,要对资源进行操作,都是访问这个URL。

2)表现层,返回给前端的内容格式,是json,xml还是html等

1、?type=json表示返回json格式,?type=xml表示返回xml格式。

2、xxx.html表示返回html格式。

3、xxx.png表示返回png。

在REST定义里,应该在HTTP请求的头信息里面:Accept和Content-Type,这两个字段才是用来描述“表现层”的返回格式。

3)状态转化,对资源进行操作,就是状态转化,在REST里,用HTTP协议的谓词来表示,比如

GET、POST、PUT、DELETE,分别表示获取资源、新建资源、更新资源、删除资源。

说了这么多定义,REST风格的接口是有如下规范

谓词规范

1、GET 获取资源;

2、POST 新建/插入/添加资源;

3、PUT 更新资源(更新所有字段);

4、DELETE 删除资源;

5、PATCH 部分更新资源部分字段。

 URL命令规范

REST中的URL,必须是名词

 比如

GET        /Users/Id        //获取用户
GET        /Users            //获取用户列表
POST      /Users       //添加用户
PUST       /Users/Id      //更新用户
DELETE    /Users/ID     //删除用户

避免多级URL

也就是防止出现多个/,针对需要较多过滤信息的,可以通过API的参数形式,过滤返回结果。

幂等

在REST也是有明确规定的。

1、安全、幂等:GET、HEAD、OPTIONS。

2、非安全、非幂等:POST、PUT、DELETE、PATCH。

CURD的接口设计

在REST对CRUD有了明确的规范定义,但是我们实际业务系统是非常复杂的,往往REST是无法满足我们的要求的。这个时候需要根据业务逻辑去抽取对外的接口。

REST响应

响应成功返回的状态码

GET: 200 OK

POST: 201 Created

PUT: 200 OK

PATCH: 200 OK

DELETE: 204 No Content

 重定向

302会自动跳转,303不会自动跳转。

错误代码

客户端

400 Bad Request:服务器不理解客户端的请求,未做任何处理。

404 Not Found:所请求的资源不存在,或不可用。

401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。

403 Forbidden:用户通过了身份验证,但是不具有访问资源所需的权限。

405 Method Not Allowed:用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。

410 Gone:所请求的资源已从这个地址转移,不再可用。

415 Unsupported Media Type:客户端要求的返回格式不支持。比如,API 只能返回 JSON 格式,但是客户端要求返回 XML 格式。

422 Unprocessable Entity :客户端上传的附件无法处理,导致请求失败。

429 Too Many Requests:客户端的请求次数超过限额。

服务器

500 :请求正常,但是服务器发送异常。

503:服务器无法处理,处于维护状态。

RESTful的返回格式

API返回数据不能使用纯文本方式,应该是结构化的,最好是采用JSON格式。

所以响应HTTP头Content-Type指定application/json,通用的请求头ACCEPT也要设置为application/json。

返回格式

单个对象

{

id:1

name:“dd”

}

 多个对象

[

{

id:1

name:“dd”

},

{

id:2

name:“dd”

}

]

 多个对象带信息

{

[

]

其他信息

}

 错误信息

{

"code": "InvalidToken",

"message": "授权过期"

}

好了今天的分享就到这里。 也欢迎需要的人关注我的公号,里面不定期分享内容。感谢。

希望对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外包干了2个月,技术明显退步

回望过去,我是一名普通的本科生,于2019年通过校招有幸加入了南京某知名软件公司。那时的我,满怀着对未来的憧憬和热情,投入到了功能测试的岗位中。日复一日,年复一年,转眼间,我已经在这个岗位上…

Git协作场景

1、日常需求开发 在日常开发中,研发人员通常需要从 develop 分支创建 feature 分支进行功能开发,并在开发完成后将其合并回 develop。常规的操作流程如下: 创建 feature 分支: 研发人员从 develop 分支创建一个新的 feature 分支…

优化SpringBoot接口:异步处理提升系统吞吐量策略

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目:CSDN主页YAML墨韵 学如逆水行舟&#xff0c…

牵手App红娘来助力,打造线上交友“好管家”

线上交友以其便捷性、广泛性和互动性等特点,正逐渐成为单身男女寻找恋爱伴侣的重要渠道。相较于传统相亲模式,线上交友不仅打破了时间和空间的限制,更以其丰富的互动功能和个性化的匹配算法,为用户提供了前所未有的交友体验。在这…

Python数据分析-航空公司客户满意度分析

一、研究背景 随着航空业的快速发展,航空公司之间的竞争愈发激烈。航空公司不再仅仅依靠价格、航班时间等基本要素来吸引客户,而更多地关注如何提升客户体验与满意度。乘客的飞行体验和满意度不仅影响了他们的忠诚度,也对航空公司在市场中的…

IJKPlayer源码分析-整体结构

根据我们的之前的老方法,采用结构化的方式来对IJKPlayer源码做个分析,首先,我们从整体的角度先把IJKPlayer的整体架构和流程讲下,让大家先有个整体的印象。 本地JNI入口 在Android环境下,JVM层载入一个本地so库流程大致…

在数据库产品中如何设计基于列和行的访问控制功能

在数据库产品中设计基于列和行的访问控制功能(Column-Level and Row-Level Access Control, CLAC 和 RLAC)是一种细粒度的权限管理方式,能够进一步提升数据安全性和灵活性。通过这种控制,数据库可以限制特定用户或角色只能访问某些…

【C++11】包装器:深入解析与实现技巧

C 包装器:深入解析与实现技巧 个人主页 C专栏 目录 引言包装器的定义与用途C 包装器的常见应用场景实现包装器的技巧使用 RAII 实现资源管理案例分析:智能指针模板包装器的应用包装器与设计模式性能优化更多应用案例总结 引言 C 是一门灵活且强大的语…

搜维尔科技:感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能

感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能 感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能

vue后台管理系统从0到1搭建(4)各组件的搭建

文章目录 vue后台管理系统从0到1搭建(4)各组件的搭建Main.vue 组件的初构 vue后台管理系统从0到1搭建(4)各组件的搭建 Main.vue 组件的初构 根据我们的效果来看,分析一下,我们把左边的区域分为一个组件&am…

Learn OpenGL In Qt之纹理

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 公众号: C学习与探索 | 个人主页: rainInSunny | 个人专栏: Learn OpenGL In Qt 文章目录 纹理纹理坐标纹理环绕方式纹理采样多级渐远纹理 纹理加载和创建加载纹理创建纹理 应用纹理 纹理 纹理坐标…

等保测评在各个行业的应用

等保测评的基本概念和流程 等保测评,即网络安全等级保护测评,是根据国家相关法律法规和标准,对信息系统实施安全等级划分,并针对各等级采取相应安全保护措施的过程。等保测评的流程通常包括信息系统定级、备案、安全建设、等级测评…

Element UI 的 el-tree 组件节点取消双击后的鼠标选中文字状态

要取消 Element UI 的 el-tree 组件节点双击后的鼠标选中文字状态,你可以通过以下几种方式来实现: 使用 CSS 禁止选中: 你可以在全局样式中或者特定的树节点上添加 CSS 规则,来禁止用户选择文本。例如,你可以在 el-tre…

【AWS AMI跨境备份】跨境使用 S3 备份和还原 AMI 镜像

文章目录 一、实验场景二、实验目标三、实验架构图四、涉及到AWS服务五、演示操作5.1 创建EC2实例5.2 创建映像5.3 备份AMI至Global S35.4 复制AMI从Global S3至 CN S35.5 还原AMI5.6 测试AMI 六、参考链接 一、实验场景 将 AWS Global区域的EC2实例备份至 AWS CN区域。 备份…

苍穹外卖学习笔记(二十五)

文章目录 Spring Task介绍应用场景: cron表达式例如: 入门案例 订单状态定时处理处理超时订单处理一直配送中的订单OrderMapper WebSocket介绍HTTP协议和WebSocket协议对比应用场景:入门案例1. 使用websocket.html作为WebSocket客户端2. 导入…

Windows多线程编程 互斥量和临界区使用

Windows 多线程编程允许程序同时运行多个线程,提高程序的并发性和执行效率。多线程编程中的核心概念包括线程的创建、同步、调度、数据共享和竞争条件等。本文详细介绍了 Windows 多线程编程的关键技术点,并解释如何使用线程同步机制来保证线程安全。 1…

2.2.ReactOS系统,系统调用表MainSSDT的实现

2.2.ReactOS系统,系统调用表MainSSDT的实现 2.2.ReactOS系统,系统调用表MainSSDT的实现 文章目录 2.2.ReactOS系统,系统调用表MainSSDT的实现系统调用表MainSSDTSVC_ 宏的定义sysfuncs.h函数的声明 系统调用表MainSSDT ULONG_PTR MainSSDT[…

【FFmpeg系列】:图片处理

引言 FFmpeg 是一个功能强大的多媒体处理工具,广泛应用于音视频处理领域。然而,它的图片处理能力同样不容忽视。本文将深入探讨 FFmpeg 在图片处理方面的高级技巧和优化方法,帮助您更高效地完成图片处理任务。 一、图片格式转换 1.1 基础转…

前端打印功能(vue +springboot)

后端 后端依赖生成pdf的方法pdf转图片使用(用的打印模版是带参数的 ,参数是aaa)总结 前端页面 效果 后端 依赖 依赖 一个是用模版生成对应的pdf,一个是用来将pdf转成图片需要的 <!--打印的--><dependency><groupId>net.sf.jasperreports</groupId>&l…

LCD补充

LCD补充 目录 LCD补充 tip:随着我们学的越来越多&#xff0c;代码长度越来越长&#xff0c;编译越来越慢&#xff0c;有没有超过内存是我们比较关心的一件事&#xff0c;通过以下方法可以实时看到写的代码的大小 回顾LCD LCD补充功能 -- 1、有关在LCD上显示动图&#xff…