在聊这个问题之前,先来说一说什么是Api:

API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。 [1] 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。

上面的是百度百科对于Api的解释,那么通俗的讲什么是API呢?

APi就是开发者提供的实现特定功能的一系列接口(这么说有些狭义,但可以先这么理解。)实际就是Application Programming Interface的解释。

那么什么是Rest风格的Api呢?
简单大致来说:
REST API是基于资源的,而"动作"早就由HTML提供好了。

举个例子:
基于过程(动作)的api的url是这样的:
获取博客列表 /api/getbloglist/
添加博客 /api/addblog/ 还有可能设置成/api/postblog/
删除博客 /api/deleteblog/
而REST API是这样的
/api/blog
没了,就这一个接口,就能完成上面所有的任务。是不是很清晰?

基于这一个url,我们使用不同的html动词GET POST PUT DELETE,就能完成不同的动作。其中PUT 和 DELETE需要传入博客id。
这种使用http本身动词来实现Api的开发就叫做Rest风格的Api。
同时,Rest风格的Api还具有以下特性:

Rest风格的APi:

URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。

识别(identify)、 表示(represent) 、交互(interact with)。

  • 看Url就知道要什么
  • 看http method就知道干什么
  • 看http status code就知道结果如何

1、 REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口);

2、Server提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。“资源”是REST架构或者说整个网络处理的核心。比如:

http://api.qc.com/v1/newsfeed: 获取某人的新鲜;

http://api.qc.com/v1/friends: 获取某人的好友列表;

http://api.qc.com/v1/profile: 获取某人的详细信息;

3、用HTTP协议里的动词来实现资源的添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转:

GET 用来获取资源,

POST 用来新建资源(也可以用于更新资源),

PUT 用来更新资源,

DELETE 用来删除资源。比如:

DELETE http://api.qc.com/v1/friends: 删除某人的好友 (在http parameter指定好友id)

POST http://api.qc.com/v1/friends: 添加好友

UPDATE http://api.qc.com/v1/profile: 更新个人资料

4、Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然还可以压缩HTTP传输时的数据(on-wire data compression)。

5、用 HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误等。

在学习Rest风格的Api时,有两点是需要我们注意的需要理解的重点:

1、REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露。

比如:左边是错误的设计,而右边是正确的

GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗
GET /rest/api/addDogs --> POST /rest/api/dogs 添加一个小狗狗
GET /rest/api/editDogs/:dog_id --> PUT /rest/api/dogs/:dog_id 修改一个小狗狗
GET /rest/api/deleteDogs/:dog_id --> DELETE/rest/api/dogs/:dog_id 删除一个小狗狗

2、REST很好地利用了HTTP本身就有的一些特征,如HTTP动词、HTTP状态码、HTTP报头等等。

HTTP动词
GET 获取一个资源 POST 添加一个资源 PUT 修改一个资源 DELETE 删除一个资源
HTTP状态码
200 OK 400 Bad Request 500 Internal Server Error
HTTP报头
Authorization 认证报头 Cache-Control 缓存报头 Cnotent-Type 消息体类型报头 …

什么是Rest风格的Api?相关推荐

  1. mysql例子 restful_Gin实战:Gin+Mysql简单的Restful风格的API

    我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...

  2. restful风格_什么是RESTful风格的API设计?

    随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但我们说了那么多RESTful设计,它到底是什么?本篇文章带大家来了解一下它的真实面目. RESTful概念 首先,我们需要明确的是 ...

  3. php yii2 api框架,Yii2框架制作RESTful风格的API快速入门教程

    先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...

  4. 什么是RESTful风格的API设计?

    随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但我们说了那么多RESTful设计,它到底是什么?本篇文章带大家来了解一下它的真实面目. RESTful概念 首先,我们需要明确的是 ...

  5. Gin实战:Gin+Mysql简单的Restful风格的API

    我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...

  6. RESTful风格的API设计

    RESTful风格的API设计 1.你怎么理解 RESTful 2000 年,Roy Thomas Fielding 博士在他那篇著名的博士论文<Architectural Styles and ...

  7. PB中设置各种窗口风格的API

    PB中设置窗口风格的API 直接主题: 下面的方法可以设置各种窗口的属性,包括大小,最大化,最小化, response风格的窗口一样可以设置 注:窗口的controlmenu=false //必须的, ...

  8. restful 风格 web api规范

    协议:http/https 域名 : http://api.example.com/xxx/xxx api: 标明api接口服务 xxx: 服务 xxx: 资源 版本控制: 一.使用MediaType ...

  9. 将照片转换成漫画风格的API推荐

    这段时间休息的时候发现了一个很有意思的API--将照片转换成漫画风格API,是在 APISpace 这个接口服务平台发现的.它里面的很多接口都非常的好用,使用起来也很方便,所有的接口都可以提供免费的试 ...

最新文章

  1. java image filters[02]-过滤器初探
  2. linux -------- 使用xshell ,winscp 连接linux 以及一些问题解决
  3. windows 10 快速修复
  4. 用WMI获取远程机器操作系统的详细信息
  5. Linux运维工程师:30道面试题整理
  6. mshflexgrid固定行对齐_放开那个空格键让我来,word对齐文字的四个方法
  7. IDEA新特性:提前知道代码怎么走!
  8. Java服务,内存OOM问题如何快速定位?
  9. DotNet Core 2.0部署后外网IP访问
  10. 使用 IntraWeb (39) - THttpRequest、THttpReply
  11. php jquery ajax xml,jquery Ajax解析XML数据代码实例
  12. mysql 并发性_MySQL 事务
  13. android-mock-gps
  14. 第十八届西南科技大学ACM程序设计竞赛(同步赛)
  15. java复数类求模_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算 用java编写一个复数类...
  16. 中科大自主招生2018笔试数学之三
  17. 计算机硬盘分区显示不全,windows7系统磁盘分区图标显示不正常的两种解决方法【图】...
  18. java jedis.incr()_Java Jedis.incr方法代碼示例
  19. nginx安装包安装nginx
  20. border渐变 ios_iOS给视图添加渐变色

热门文章

  1. 万测试验机软件,万测关注检查井盖质量检测
  2. android 六边形布局,Android自定义View——一个可定制的六边形阵列
  3. Auto.js 9版本 OCR 文字识别
  4. 软件测试工程师简历编写规范
  5. fusioncharts生成图表flash遮挡页面中元素的情况
  6. 华为matebook笔记本鸿蒙,聊聊鸿蒙对笔记本电脑行业的影响
  7. luogu 3426题解 (KMP)
  8. 我的电脑ip攻击邮件服务器,如何避免邮件服务器IP被列入黑名单
  9. 云麦体脂秤华为体脂秤_如果是一个真正的体脂秤就好了:华为智能体脂秤
  10. Verilog 实现伪随机数生成器(线性反馈移位寄存器)