resful规范: 进行数据交换时的代码潜规则
目前主流的三种web服务交互方案:
REST (Representational State Transfer) 表征性状态转移
SOAP (Simple Object Access Protocol)简单的对象访问协议
XML-RPC (XML Remote Procedure Call)基于XML的远程过程调用
但最为流行最为常用就是restful,而当一个架构符合REST的约束条件和原则,我们就称它为restful架构。
为了避免明文传输,更好的维护数据传输时的安全性,restful规范推荐使用https替代http。
1.restful规范就是在想要完成程序间数据交互的代码时所需要的遵循的规范,它视网上的一切数据为资源,所有的操作都是在对资源进行增删改查,所以这是一种面向资源式的编程。
2..如果说数据库就是资源库,那么URL就是用于检索的目录和直达资源的高速路。为了避免歧路亡羊的事情发生,所以在编写URL的时候必须遵循固定的规范,表达出的信息也要清晰明确,不至于产生歧义。
在URL中要明确体现一下几点:
1.api标识:http://www.xxxx.com/api/...
2.版本信息:http://www.xxxx.com/api/v1...
3.用名词而不是动词来表示所访问资源的种类,所用名词往往与数据库表格的名称相同
3.如果要通过在url中添加一些筛选条件,实现对资源的精准定位和对状态的精确控制,一般是以?+关键字= int整型 (需要在前段做好正则匹配)
http://www.luffycity.com/api/user/?page=1&type=9 #
4.restful规范下的URL代码比FBV下的URL要更加精简,只需要一个URL就能完成所有操作,因为他是根据不同的请求方法来判断对数据进行何种操作,而不需要分别为增删改查各设置一个URL。
5. 返回值:要以json的形式返回值,delete的返回值为空
GET http://www.luffycity.com/api/user/
[
{'id':1,'name':'alex','age':19},
{'id':1,'name':'alex','age':19},
]
POST http://www.luffycity.com/api/user/
{'id':1,'name':'alex','age':19}
GET http://www.luffycity.com/api/user/2/
{'id':2,'name':'alex','age':19}
PUT http://www.luffycity.com/api/user/2/
{'id':2,'name':'alex','age':19}
PATCH https//www.luffycity.com/api/user/2/
{'id':2,'name':'alex','age':19}
DELETE https//www.luffycity.com/api/user/2/
空
6.给用户返回状态码:
- 200,成功
- 300,301永久 /302临时
- 400,403拒绝 /404找不到
- 500,服务端代码错误
操作异常时,要返回错误信息
{
error: "Invalid API key"}
要为可能跳转的下一个网页要提供接口:Hypermedia AP
{
'id':2,
'name':'alex',
'age':19,
'depart': "http://www.xxx.com/api/user/30/"
}
resful规范: 进行数据交换时的代码潜规则的更多相关文章
- [Elixir007] on_definition规范函数定义时的各种潜规则
1.需求 写一个基于memcache的cache模块, 需要在key前面加上特定的前缀, 所以user cache的原始的store函数应该写成 # user.exdef store(user_id, ...
- JSON、使用JSON进行数据交换的基础和原理
1. JSON 1.1. JSON 1.1.1. 什么是JSON JSON即Javascript对象表示法,是一种现在主流的数据交换格式.之所以应用广泛还是由其简单易读所决定的. 简单,只有六种类型的 ...
- GPIO硬件资源的申请,内核空间和用户空间的数据交换,ioctl(.....),设备文件的自动创建
1.通过GPIO库函数控制LED open("/dev/myleds",...) close(fd) ----------------------------- ...
- MFC-控件操作及数据交换
对控件进行操作函数如下: 1.ShowWindow() TURE为显示控件,FALSE为隐藏该控件: if(条件) GetDlgItem(ID)->ShowWindow(TRUE);//满足条件 ...
- 普通的jdbc事务在插入数据后 下面的代码报错时 数据不会回滚 但是 spring的事务会回滚
普通的jdbc事务在插入数据后 下面的代码报错时 数据不会回滚 但是 spring的事务会回滚
- 当From窗体中数据变化时,使用代码获取数据库中的数据然后加入combobox中并且从数据库中取得最后的结果
private void FormLug_Load(object sender, EventArgs e) { FieldListLug.Clear();//字段清除 DI = double.Pars ...
- Disruptor——一种可替代有界队列完成并发线程间数据交换的高性能解决方案
本文翻译自LMAX关于Disruptor的论文,同时加上一些自己的理解和标注.Disruptor是一个高效的线程间交换数据的基础组件,它使用栅栏(barrier)+序号(Sequencing)机制协调 ...
- JSON的基本结构和数据交换原理
0.补充的写在前面的话 2017.03.29 补充内容 最近看到这篇博客的阅读量,想来应该是有部分网友来过想要了解JSON的基本概念,这篇博文写得可能不是那么好,所以现在再补充贴一位老师的文章,希望能 ...
- Js中JSON数据交换使用总结
Json格式简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是JavaScript原 ...
随机推荐
- Git 基本应用
微信公众号:Java修炼指南博客园:https://home.cnblogs.com/u/wuyx/CSDN: https://mp.csdn.net/简书:https://www.jianshu.c ...
- 黑马vue---31-32、vue过滤器实例
黑马vue---31-32.vue过滤器实例 一.总结 一句话总结: vue内部的东西,无论是过滤器还是组件,都是键值对的方式 1.过滤器的定义语法? Vue.filter('过滤器的名称', fun ...
- Flutter移动电商实战 --(27)列表页_现有Bug修复和完善
小解决小bug 默认右侧的小类没有被加载 数据加载完成后,就list的第一个子对象传递给provide进行赋值,这样右侧的小类就刷新了数据 默认加载了第一个类别 调整颜色 对比图片调整下颜色 这里的参 ...
- java使用jconsole查看java程序运行(jmx原理)
在JVM启动参数上加上 java -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.aut ...
- OpenNESS,开源的边缘网络服务平台
目录 文章目录 目录 参考文章 OpenNESS 的电梯间演讲 OpenNESS 与 ETSI MEC Edge Controller Software 的功能清单 Edge Platform Sof ...
- code review 20190705
命名规范: 做了什么? 目的是什么? 在什么基础上进行? 注释说明 sql update,where 先行????? 警告: 清空所有警告:所有隐藏比较深入的bug,都是由警告带来的 + 忽略警告 枚 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_22-页面静态化-静态化测试-静态化程序测试
测试service内些的静态化的方法 先新建一个测试类 模板的id 放到下拉的静态数据里面 这样这条数据 就是用用的轮播图005这个模板 把这条数据静态化 进入到断点里面.先获取数据模型 获取模板时 ...
- easy-mock 本地部署
前言 为什么要本地部署 easy-mock呢? easy-mock官网经常挂,太浪费时间了: 公司突然不给上外网,太垃圾了: 就是想要折腾自己,太爱学习了(哈哈哈): Easy-mock 官网 安装需 ...
- jpa基于按annotation的hibernate主键生成策略
JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hib ...
- Delphi 中自定义异常及异常处理的一般方法
delphi中异常定义如下: TCustomException = class(Exception) private public constructor ...