REST ful风格总结(在逍遥子的基础上~只供自己简单总结,详情请看原文)
转载逍遥子博客 博客地址
1.在取接口名的时候端点(animals)不准使用动词,比如:https://api.example.com/v1/animals
- - HTTP请求动作
PUT 更新一整个对象 修改
PATCH 更新对象的部分信息 更新状态
DELETE 删除一个对象 删除
GET 查询对象信息(包括集合) 查询
POST 创建一个对象 添加
2.返回状态码
200 OK – [GET]
客户端向服务器请求数据时,服务器找到这些数据并将之返回给客户端(此行为幂等);[逍遥子笔记:GET操作只能获取数据(即只读),不应该对服务器的数据进行任何形式的修改]201 CREATED – [POST/PUT/PATCH]
客户端向服务器发送数据,服务器为这些数据创建一个资源;204 NO CONTENT – [DELETE]
客户端请求服务器删除一个资源时,服务器将该资源删除;[逍遥子笔记:返回码204表示执行成功了,但是没有数据。HTTP 的RFC2616中对于204返回码的描述为:如果客户端是个代理(例如浏览器),它不应该改变“触发该请求的”页面展示,该返回值主要用于输入行为发生时,虽然新的或更新过的元数据信息被应用于当前页面,但代理(浏览器)不能改变当前的页面展示400 INVALID REQUEST – [POST/PUT/PATCH]
客户端给服务器发送了一个无效的请求,服务器对此不作任何动作(此行为幂等)。
404 NOT FOUND – [*]
客户端请求了一个不存在的资源或资源集合,服务端对此不作任何动作(此行为幂等)。
500 INTERNAL SERVER ERROR – [*]
服务器内部发生了错误,客户端无法知道请求是否被执行成功了。
3.状态码范围
1XX的返回码预留给HTTP的底层使用,在你的整个职业生涯中都不会主动发送这种返回码;2XX的返回码表示请求按照预期执行并成功返回了信息。服务端要尽可能给用户返回这种结果。
3XX的返回码表示请求重定向,大多数API都不会经常使用这种请求(),但是最新的超媒体API会充分使用这些功能。
4XX的返回码主要表示由客户端引起的错误,例如请求参数错误或者访问一个不存在的资源,这些必须为幂等操作,并且不能改变服务器的状态[逍遥子笔记:其实服务器的状态发生了改变就意味着操作不是幂等了]。
5XX的返回码主要表示由服务器引起的错误,通常情况下,这些错误都是开发人员([逍遥子笔记:这里应该是服务器程序的开发人员])接触不到的底层函数抛出来,然后传递给用户([逍遥子笔记:这里应该是第三方开发人员])的。用户在收到5XX的返回码时,他们不知道服务器当前的工作状态是否正常,因此,要尽量避免这种情况发生
4.请求包里提供了一个key-value集合,叫做HTTP首部,紧随其后的是两个空行([逍遥子笔记:一个回车符一个换行符),
最后是请求包体,所有这些都在同一个HTTP请求包内。
- - HTTP请求包示例POST /v1/animal HTTP/1.1Host: api.example.orgAccept: application/json - - 返回数据格式类型Content-Type: application/jsonContent-Length: 24{"name":"Gir","animal_type": 12}- - HTTP响应包示例HTTP/1.1 200 OK - - 返回状态码Date: Wed, 18 Dec 2013 06:08:22 GMT Content-Type: application/jsonAccess-Control-Max-Age: 1728000Cache-Control: no-cache{"id": 12,"created":1386363036,"modified":1386363036,"name":"Gir","animal_type": 12}
REST ful风格总结(在逍遥子的基础上~只供自己简单总结,详情请看原文)相关推荐
- 软件测试面试题:请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述。
请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述. 1)单元测试自动化:在面向过程编程中,单元也可以是整个模块,单常见的是单个函数或过程. 在面向对象编程 ...
- 国开电大大学计算机应用基础 (专科)终结性考试试题以及答案(大作业)所有答案和PPT已经做好,直接填写名字学号即可,详情可以看缩略图。
也可以直接点击此连接直接购买国开电大大学专科计算机应用基础终结性考试试题以及答案PPT.zip-其它文档类资源-CSDN下载大学计算机应用基础(专科)终结性考试试题以及答案更多下载资源.学习资料请访问 ...
- android自定义滚轴选择器_Android自定义滚动式时间选择器(在他人基础上修改)...
尽管Android给我们提供了时间选择控件DatePicker和TimePicker(它们的使用方法可以参考我的这篇文章Android之日期时间选择控件DatePicker和TimePicker),但 ...
- 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用
这是 Jerry 2021 年的第 26 篇文章,也是汪子熙公众号总共第 297 篇原创文章. 本文绝非标题党. Jerry 前一篇文章 SAP Cloud Application Programmi ...
- Android开源项目大合集(转载的基础上添加了项目地址)
WeChat高仿微信 项目地址:https://github.com/motianhuo/wechat 高仿微信,实现功能有: 好友之间文字聊天,表情,视频通话,语音,语音电话,发送文件等. 知乎专栏 ...
- 零基础如何成为一名原画师??看这里
1.原画师(动画原画师+游戏原画师)两者这间的差距/必需掌握的技能 对于这个问题,动画原画师来说,主要是要想做原画师的前提,就先是要做中间画师,一天一天的练,线条,运动规律,夸张画法,以及各项技巧,比 ...
- Spring Boot+Spring Cloud基础入门(一)简单介绍
转自:https://blog.csdn.net/mingwei_cheng/article/details/80939833 在经历了毕业的摧残后,终于又有时间来更新博客了,毕业设计项目是写了一个基 ...
- Python gensim库使用word2vec 加载和保存模型、在预训练基础上训练自己的预料
Python gensim库使用word2vec 常见: gensim.models.word2vec.Word2Vec(size=300, sg=1, min_count=1) 加载和保存模型 ge ...
- 灵活性是原则性基础上的灵活
灵活性是原则性基础上的灵活,没有原则性的灵活是耍流氓. 原则性是质,灵活性是量,灵活性有度的要求,就是不能改变质. 转载于:https://www.cnblogs.com/jcode/p/596186 ...
- R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)
R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...
最新文章
- NYOJ 30 Gone Fishing JAVA+解析
- 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。...
- 淮安中专学计算机哪个学校好,2021淮安初中十强排名 哪些初中比较好
- navicat 的查询功能
- 冉莹颖与邹市明的有情人终成眷属
- 查看pod网络范围_K8S Pod 内抓包快速定位网络问题
- android webview 多次加载,android – 重复webview,我想在每个加载相同
- 2018.09.29 bzoj3885: Cow Rectangles(悬线法+二分)
- getResourceAsStream的3种路径配置
- 仿写京东商品详情页面
- 拓端tecdat|R语言弹性网络Elastic Net正则化惩罚回归模型交叉验证可视化
- MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])
- 透明loading_四步搞定小菊花 Loading 动画
- vb mysql 实例教程_在VB.NET应用中使用MySQL的方法
- hadoop的filesplit
- 正则表达式中的?表示匹配前面的正则表达式0次或者1次
- 树莓派与DHT11温度传感器的那些事儿
- 整理:状态机的C语言编程
- 龙芯中科科创板上市:市值357亿 成国产CPU第一股
- 从个人英雄到万能开发者,程序员3.0时代到来