浅谈 REST 和 RESTFul API
RESTFul API的特点:
- 基于“资源”,数据也好、服务也好,在RESTFul设计里一切都是资源。
- 无状态。一次调用一般就会返回结果,所有的资源,都可以通过URI定位
- URL中通常不出现动词,只有名词
- URL语义清晰、明确
- 使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查
使用JSON不使用XML
RESTFul API的一些最佳实践原则:
- 使用HTTP动词表示增删改查资源, GET:查询,POST:新增,PUT:更新,DELETE:删除
- 返回结果必须使用JSON
- HTTP状态码,在REST中都有特定的意义:200,201,202,204,400,401,403,500。比如401表示用户身份认证失败,403表示你验证身份通过了,但这个资源你不能操作。
- API必须有版本的概念,v1,v2,v3
- 使用Token令牌来做用户身份的校验与权限分级,而不是Cookie。
- 使用 - 而不是使用 _ 做URL路径中字符串连接。
REST 是基于HTTP,面向资源的,而资源是通过 URI 进行暴露。
优点:对uri进行了限制,只用于定义资源;规范统一,使得API适用于各种各样的前端设备;使用了版本号(V1),更加规范
缺点:API接口返回的数据通常是完整的数据模型,对客户端不是很友好,可能只需要某几个字段
浅谈 REST 和 RESTFul API的更多相关文章
- 浅谈soa之RESTful
今晚打算花点时间整理一下面向服务的架构oap.1传统中小型项目架构一般是这样的:(java)html+servlet+jdbc.和(.net)html+handler+ado.net都是在一台应用来. ...
- RESTful API浅谈
一.REST的由来 全称:REST,全称是Resource Representational State Transfer,即:资源在网络中以某种形式进行状态转移.————所谓状态的转移,可参考< ...
- [01] 浅谈RESTful风格的API
1.什么是RESTful风格的API REST,即Representational State Transfer,可以理解为"(资源的)表现层状态转化". 在网络上,我们通过浏览器 ...
- Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice
浅谈SOAP Webservice和RESTful Webservice REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性.RE ...
- 浅谈RESTful
浅谈RESTful 什么是RESTful? REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...
- 浅谈WebService SOAP、Restful、HTTP(post/get)请求
http://www.itnose.net/detail/6189456.html 浅谈WebService SOAP.Restful.HTTP(post/get)请求 2015-01-09 19:2 ...
- 浅谈REST API
浅谈REST API 说明: 本文部分内容根据其它网络文章编写,如有版权问题请及时通知. 背景 发迹于互联网的REST,在国内国外混得可谓是风生水起,如今又进入电信行业的视野,连TMF都将其作为战略项 ...
- 示例浅谈PHP与手机APP开发,即API接口开发
示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...
- 浅谈Windows API编程
WinSDK是编程中的传统难点,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制…… WinSDK是编程 ...
随机推荐
- CodeLite C/C+ IDE更新放出
CodeLite IDE Revision 1145 for C/C++已经发布,这是一个强大的开源,跨平台的C/C++整合开发环境.目前已经在Windows XP SP3,Ubuntu 7.10 G ...
- 廖雪峰Java3异常处理-2断言和日志-2使用JDK Logging
1.日志 为了取代System.out.println() 可以设置输出样式 可以设置输出级别,禁止某些级别输出 可以被重定向到文件 可以按包名控制日志级别 2.JDK内置Logging 在java. ...
- 禅道在docker上部署与迁移
一.禅道部署 1.下载地址 禅道开源版: http://dl.cnezsoft.com/zentao/docker/docker_zentao.zip 数据库用户名: root,默认密码: 123 ...
- 多级字典表单的Python实现
需求: 可依次选择进入各子菜单 可从任意一层往回退到上一层 可从任意一层退出程序 数据结构 menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'go ...
- [UE4]模拟物理子弹
模拟物理子弹有时候会穿透对象,所以不建议使用
- js对象-平铺与嵌套的互相转换
一个json对象,包含嵌套关系,传输过来的时候是平铺的,顺序打乱,用parentCode属性来关联,如下 { "1":{ "name": "中国&qu ...
- linux下的网络通信设置:openssh、PuTTY、tightVNC
OpenSSH的安装: windows上安装PuTTY: PuZZY上传文件到linux: 1.在window下的cmd中cd到PuZZY所在的文件夹下 2.使用pscp命令上传文件 3.使用psc ...
- javascript-时间戳
// 获取当前时间戳(以s为单位) var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; console.log( ...
- HBase脚本命令
1. 脚本使用小结1.开启集群 start-hbase.sh 2.关闭集群 stop-hbase.sh 3.开启/关闭[所有]的regionserver.zookeeper hbase-daemons ...
- tp3.2 支付宝手机网站支付
手机网站支付接口,支付宝官方文档:https://b.alipay.com/signing/productSet.htm?navKey=all 第一步: 1)登陆支付宝企业账号 进入支付宝官网 ,登陆 ...