要弄清楚什么是RESTful API,首先要弄清楚什么是REST。REST -- REpresentational State Transfer,英语的直译就是“表现层状态转移”。如果看这个概念,估计没几个人能明白是什么意思。那下面就让我来用一句人话解释一下什么是RESTful:

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

Resource:资源,即数据。

Representational:某种表现形式,比如用JSON,XML,JPEG等;

State Transfer:状态变化。通过HTTP动词实现。

所以RESTful API就是REST风格的API。

那么在什么场景下使用RESTful API呢?

在当今的互联网应用的前端展示媒介很丰富。有手机、有平板电脑还有PC以及其他的展示媒介。那么这些前端接收到的用户请求统一由一个后台来处理并返回给不同的前端肯定是最科学和最经济的方式,RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。

RESTful API由后台也就是SERVER来提供前端来调用。前端调用API向后台发起HTTP请求,后台响应请求将处理结果反馈给前端。也就是说RESTful 是典型的基于HTTP的协议。那么RESTful API有哪些设计原则和规范呢?

1,资源。首先是弄清楚资源的概念。资源就是网络上的一个实体,一段文本,一张图片或者一首歌曲。资源总是要通过一种载体来反应它的内容。文本可以用TXT,也可以用HTML或者XML、图片可以用JPG格式或者PNG格式,JSON是现在最常用的资源表现形式。

2,统一接口。RESTful风格的数据元操CRUD(create,read,update,delete)分别对应HTTP方法:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源,这样就统一了数据操作的接口。

3,URI。可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。一般的,每个资源至少有一个URI与之对应,最典型的URI就是URL。

4,无状态。所谓无状态即所有的资源都可以URI定位,而且这个定位与其他资源无关,也不会因为其他资源的变化而变化。有状态和无状态的区别,举个例子说明一下:

例如要查询员工工资的步骤为第一步:登录系统。第二步:进入查询工资的页面。第三步:搜索该员工。第四步:点击姓名查看工资。这样的操作流程就是有状态的,查询工资的每一个步骤都依赖于前一个步骤,只要前置操作不成功,后续操作就无法执行。

如果输入一个URL就可以得到指定员工的工资,则这种情况就是无状态的,因为获取工资不依赖于其他资源或状态,且这种情况下,员工工资是一个资源,由一个URL与之对应可以通过HTTP中的GET方法得到资源,这就是典型的RESTful风格。

说了这么多,到底RESTful长什么样子的呢?

GET:http://www.xxx.com/source/id 获取指定ID的某一类资源。例如GET:http://www.xxx.com/friends/123表示获取ID为123的会员的好友列表。如果不加id就表示获取所有会员的好友列表。

POST:http://www.xxx.com/friends/123表示为指定ID为123的会员新增好友。其他的操作类似就不举例了。

RESTful API还有其他一些规范。

1:应该将API的版本号放入URL。GET:http://www.xxx.com/v1/friend/123。或者将版本号放在HTTP头信息中。我个人觉得要不要版本号取决于自己开发团队的习惯和业务的需要,不是强制的。

2:URL中只能有名词而不能有动词,操作的表达是使用HTTP的动词GET,POST,PUT,DELETEL。URL只标识资源的地址,既然是资源那就是名词了。

3:如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。?limit=10:指定返回记录的数量、?page=2&per_page=100:指定第几页,以及每页的记录数。

whitelabel error page什么意思_什么是RESTful API?总算能说清楚了相关推荐

  1. Completed 404 NOT_FOUND,Whitelabel Error Page

    写在前面,可以直接使用Ctrl+F搜"解决方法",有两个处理方法. 一.背景 SpringBoot+JSP,找不到jsp文件,后台日志不报错,前台页面显示"Whitela ...

  2. SpringBoot报错Unsatisfied dependency expressed through field userMapper和Whitelabel Error Page解决方案

    搜索下面的错误信息得到解决方法 Unsatisfied dependency expressed through field 'userMapper' 项目结构如下 解决办法 在启动类中加入注解 里面 ...

  3. SpringBoot Whitelabel Error Page的根本原因,三种解决方案以及其特点

    原文地址:https://www.jianshu.com/p/b06584591086 0.简述 在学习这个学习笔记之前最好能够对spring mvc以及Tomcat有些了解,这样理解起来更加方便,如 ...

  4. 解决:Whitelabel Error Page This application has no explicit mapping for /error...UnknownHostException

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 我的情况 : springcloud 实践,启动 ribbon 工程后,请求接口报错: Whi ...

  5. SpringBoot:如何处理SprintBoot提示Whitelabel Error Page以及了解原因?

    目录 QUESTION:如何处理SprintBoot提示Whitelabel Error Page? ANSWER: 一:产生原因 二:如何处理 2.1Whitelabel Error Page 白页 ...

  6. SpringBoot页面出现 Whitelabel Error Page

    我们运行SpringBoot项目之后需要通过Tomcat进行访问,但是我们访问的时候出现了Whitelabel Error Page的错误,我们该如何解决呢??? 错误页面 究其原因是我们的主程序缺少 ...

  7. Spring Boot : Whitelabel Error Page解决方案

    Spring Boot : Whitelabel Error Page解决方案 参考文章: (1)Spring Boot : Whitelabel Error Page解决方案 (2)https:// ...

  8. Whitelabel Error Page(一)

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  9. spring boot整合jsp报错 Whitelabel Error Page 500或者404 问题处理

    在刚刚用idea创建的spring boot 项目整合jsp时, 一直不能正常访问,报错信息如下图 There was an unexpected error (type=Internal Serve ...

最新文章

  1. 【BLE】TLSR8258开发记录之10--更改MTU为245
  2. 注水法比特功率分配介绍及MATLAB实现
  3. 华为服务器维护岗位,服务器日常维护工作
  4. animate.css(第三方动画使用方法)
  5. 2021年,朋友圈都在传这8个视频
  6. ubuntu 安装 wifi 驱动_论如何在 MacBook Pro 安装 Ubuntu 18.04(解决 wifi、触摸板、键盘驱动)...
  7. ubuntu18.04虚拟机突然连不上网
  8. 初识循环神经网络(RNN)
  9. 框架应该弄明白的理论问题
  10. 仙剑四、五、五前模型及资源提取
  11. OpenCV学习cvtColor函数
  12. 国产系统银河麒麟(龙芯MIPS)远程访问自研windows程序
  13. widows 下git记住账号密码
  14. java一个整数加100是完全平方_Java计算一个数加上100是完全平方数,加上168还是完全平方数...
  15. 00x: Django models.Model详解
  16. php截断,php include 路径截断漏洞的利用
  17. 从根节点到叶节点的路径数字之和
  18. Android CameraX的PreviewView Ar背景实景实时预览
  19. DB、DBMS、SQL分别是什么,有什么关系?
  20. 利用html做一个3D 图片动态效果

热门文章

  1. 掌握了Docker Layer Caching才敢自称精通Dockerfile
  2. .NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记...
  3. 我认真写下9段如翔一般的代码,只为等你来品鉴
  4. Docker最全教程之树莓派和Docker(十六)
  5. surging 微服务引擎 1.0 正式发布
  6. eShopOnContainers 看微服务④:Catalog Service
  7. AspNet Core下利用 app-metrics+Grafana + InfluxDB实现高大上的性能监控界面
  8. Ocelot简易教程(二)之快速开始2
  9. Orleans例子再进一步
  10. IdentityServer4 指定角色授权(Authorize(Roles=amp;quot;adminamp;quot;))