RESTful是一种设计风格,并不是一种标准。

简短的去概括的话,就是:
1、URL 定位资源

  1. 资源,就是数据。比如newsfeedfriendsorder

2、用 HTTP 动词描述操作。

  1. GETPUTPOSTDELETE

我为什么要用TA

1、以前的开发方式都是前后端混在一起开发,比如php里面写html啊之类的。那么移动开发再加上web,我们岂不是要维护三个地方。
2、随着版本迭代,项目越来越大,如果api杂乱无章,那么维护起来更是无法控制。
3、所以,我们就要有所约束,而RESTful就是利用HTTP本身的一些特征来制定的风格。


如何设计RESTful?

  • REST ful 是面向资源的,而资源是通过 URI 进行暴露。

    (一)、URI 的设计只要负责把资源通过合理方式暴露出来就可以了
    (二)、对资源的操作与它无关,操作是通过 HTTP 动词来体现。
    (三)、所以 REST ful 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。
    (四)、推荐用复数。

不太理解吗?来看个栗子:

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

  1. GET /rest/api/getDogs | GET /rest/api/dogs 获取所有狗
  2. POST /rest/api/addDogs | POST /rest/api/dogs 添加一个狗
  3. PUT /rest/api/editDogs/:dog_id | PUT /rest/api/dogs/:dog_id 修改一只狗
  4. DELETE /rest/api/deleteDogs/:dog_id | DELETE /rest/api/dogs/:dog_id 删除一只狗
左边的这种设计,很明显不符合REST风格。

上面已经说了,URI 只负责准确无误的暴露资源,而 getDogs/addDogs... 已经包含了对资源的操作,这是不对的。
相反右边却满足了,它的操作是使用标准的HTTP动词来体现。

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

    (一)、REST ful 是基于 HTTP 的,所以你的API应该去使用 HTTP的一些标准。这样所有的HTTP客户端(如浏览器)才能够直接理解你的API。
    (二)、REST ful 强调利用好 HTTP 本来就有的特征。

不太理解吗?一个一个解释:
一、HTTP 动词
  1. GET 获取一个资源
  2. POST 添加一个资源
  3. PUT 修改一个资源
  4. DELETE 删除一个资源

实际上,这四个动词实际上就对应着增删改查四个操作,这就利用了HTTP 动词来表示对资源的操作。

二、HTTP状态码

在与 API 的交互当中,无非就三种状态:

  1. 200 OK 成功
  2. 400 Bad Request 客户端错误
  3. 500 Internal Server Error 服务器端错误
三、HTTP报头
  1. Authorization 认证报头
  2. Cache-Control 缓存报头
  3. Content-Type 消息体类型报头
  4. ...

报头还有很多,不一一列举。
HTTP报头是描述HTTP请求或响应的 元数据。
它的作用是客户端 与 服务器端进行相互通信时,告诉对方应该如何处理本次请求。


一些实例如醍醐灌顶

  1. GET http://localhost:8080/api/students 可以获得所有的学生信息。
  2. GET http://localhost:8080/api/students/1 可以获得id为“1”的学生信息。
  3. POST 以下JSON内容
  4. {"id":0,"firstName":"Edison","lastName":"Di","gender":"M",
  5. "birthday":538300800000,"uscId":"1234509876","gpa":3.62,
  6. "mentorId":null,"department":"Computer Science"}
  7. http://localhost:8080/api/student 可以添加一个学生信息。
  8. PUT 以下内容
  9. {"gpa":3.62}
  10. http://localhost:8080/api/students/1 可以修改学生ID为1的学生的GPA.
  11. DELETE http://localhost:8080/api/students/1 可以删除学生ID为1的信息。

 

RESTful API入门的更多相关文章

  1. 使用 SpringBoot 构建一个RESTful API

    目录 背景 创建 SpringBoot 项目/模块 SpringBoot pom.xml api pom.xml 创建 RESTful API 应用 @SpringBootApplication @C ...

  2. Yii2框架RESTful API教程(一) - 快速入门

    前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RE ...

  3. RESTful API & Swagger入门

    什么是RESTful API? 原文地址:https://blog.csdn.net/hjc1984117/article/details/77334616 Swagger入门教程 https://w ...

  4. MongoDB最简单的入门教程之五-通过Restful API访问MongoDB

    通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到MongoDB中,并通过MongoDB Compass查看到了 ...

  5. Spring Boot入门系列(二十)快速打造Restful API 接口

    spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...

  6. 带你入门带你飞Ⅱ 使用Mocha + Chai + SuperTest测试Restful API in node.js

    目录 1. 简介 2. 准备开始 3. Restful API测试实战 Example 1 - GET Example 2 - Post Example 3 - Put Example 4 - Del ...

  7. Spring Boot入门系列(二十一)如何优雅的设计 Restful API 接口版本号,实现 API 版本控制!

    前面介绍了Spring Boot 如何快速实现Restful api 接口,并以人员信息为例,设计了一套操作人员信息的接口.不清楚的可以看之前的文章:https://www.cnblogs.com/z ...

  8. Spring Boot 入门系列(二十二)使用Swagger2构建 RESTful API文档

    前面介绍了如何Spring Boot 快速打造Restful API 接口,也介绍了如何优雅的实现 Api 版本控制,不清楚的可以看我之前的文章:https://www.cnblogs.com/zha ...

  9. Yii2框架RESTful API教程(二) - 格式化响应,授权认证和速率限制

    之前写过一篇Yii2框架RESTful API教程(一) - 快速入门,今天接着来探究一下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分 一.目录结构 先列出需要改动的文件.目录如下 ...

随机推荐

  1. [ASE][Daily Scrum]11.05

    在昨天的课程之后经过讨论进行了初步的分工,并制定出了我们的一个两周计划. 尚没有和老师讨论,已经询问了时间没有收到回复,等老师那边讨论过后我会在更新这个部分. 第一阶段的目标是用户能够在一个空白的地图 ...

  2. DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置

    感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p ...

  3. unity2D 船只型物体驱动的实现

    船只向前行驶的驱动力 假设在水中没有摩擦阻力,船只有惯性,船只可以转弯,按下前进键时船只会在力的作用下使得自身的物理运动方向变化到自身的前方方向,从而向前行进. 上图中 V:船当前物理速度 V1,V2 ...

  4. 企业项目开发--cookie(1)

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 注:本章代码基于<第五章 企业项目开发--mybatis注解与xml并用>的代码,链接如下: h ...

  5. AJPFX外汇的常见形态

    AJPFX:外汇价常见形态 外汇的价格,本质上是由供求关系决定的,但是在技术分析的世界里,是什么原因导致供求关系的改变并不重要,也没有人能准确的找出所有的因素并加以判断,但是供求关系被改变后的外汇走势 ...

  6. 利用Python做绝地科学家(外挂篇)

    i春秋作家:奶权 前言  玩吃鸡时间长的鸡友们 应该都知道现在的游戏环境非常差 特别在高端局 神仙满天飞 搞得很多普通玩家非常没有游戏体验  因为吃鸡的火爆 衍生出了一条巨大的外挂利益链 导致市面上出 ...

  7. 详述MSSQL服务在渗透测试中的利用(上篇)

    前言: 致力于复现最实用的漏洞利用过程. 本文将带领大家学习以下内容: 学习使用`xp_cmdshell`扩展存储过程 学习调用`wscript.shell` 学习MSSQL写文件 学习沙盘模式提权 ...

  8. zabbix 监控安装

    注意:此篇是在安装好lnmp环境后才能部署的操作,所以,做之前准备好lnmp环境,或者可以参考我做的lnmp环境,之后接着此篇开始安装 监控系统Zabbix-3.2.1的安装 zabbix-serve ...

  9. 文件压缩小项目haffman压缩

    文件压缩的原理: 文件压缩总体可以分为有损压缩和无损压缩两类,有损压缩是指对mp3等格式的文件,忽略一些无关紧要的信息,只保留一些关键的信息,但并不因此影响用户对于这些mp3格式文件的体验度,无损压缩 ...

  10. 【sping揭秘】5、IOC容器(一)

    OC容器实现过程 1. 容器启动阶段,读取配置文件,解析文件BeanDefinitionReader 2. Bean 实例化阶段 关于BeanFactoryPostProcessor 插手spring ...