RESTful API入门
RESTful是一种设计风格,并不是一种标准。
简短的去概括的话,就是:
1、URL 定位资源
资源,就是数据。比如newsfeed,friends,order等
2、用 HTTP 动词描述操作。
GET、PUT、POST、DELETE
我为什么要用TA
1、以前的开发方式都是前后端混在一起开发,比如php里面写html啊之类的。那么移动开发再加上web,我们岂不是要维护三个地方。
2、随着版本迭代,项目越来越大,如果api杂乱无章,那么维护起来更是无法控制。
3、所以,我们就要有所约束,而RESTful就是利用HTTP本身的一些特征来制定的风格。
如何设计RESTful?
REST ful 是面向资源的,而资源是通过 URI 进行暴露。
(一)、URI 的设计只要负责把资源通过合理方式暴露出来就可以了
(二)、对资源的操作与它无关,操作是通过 HTTP 动词来体现。
(三)、所以 REST ful 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。
(四)、推荐用复数。
不太理解吗?来看个栗子:
比如:左边是错误的设计,而右边是正确的
GET /rest/api/getDogs | GET /rest/api/dogs 获取所有狗
POST /rest/api/addDogs | POST /rest/api/dogs 添加一个狗
PUT /rest/api/editDogs/:dog_id | PUT /rest/api/dogs/:dog_id 修改一只狗
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 动词
GET 获取一个资源
POST 添加一个资源
PUT 修改一个资源
DELETE 删除一个资源
实际上,这四个动词实际上就对应着增删改查四个操作,这就利用了HTTP 动词来表示对资源的操作。
二、HTTP状态码
在与 API 的交互当中,无非就三种状态:
200 OK 成功
400 Bad Request 客户端错误
500 Internal Server Error 服务器端错误
三、HTTP报头
Authorization 认证报头
Cache-Control 缓存报头
Content-Type 消息体类型报头
...
报头还有很多,不一一列举。
HTTP报头是描述HTTP请求或响应的 元数据。
它的作用是客户端 与 服务器端进行相互通信时,告诉对方应该如何处理本次请求。
一些实例如醍醐灌顶
GET http://localhost:8080/api/students 可以获得所有的学生信息。
GET http://localhost:8080/api/students/1 可以获得id为“1”的学生信息。
POST 以下JSON内容
{"id":0,"firstName":"Edison","lastName":"Di","gender":"M",
"birthday":538300800000,"uscId":"1234509876","gpa":3.62,
"mentorId":null,"department":"Computer Science"}
到 http://localhost:8080/api/student 可以添加一个学生信息。
PUT 以下内容
{"gpa":3.62}
到 http://localhost:8080/api/students/1 可以修改学生ID为1的学生的GPA.
DELETE http://localhost:8080/api/students/1 可以删除学生ID为1的信息。
RESTful API入门的更多相关文章
- 使用 SpringBoot 构建一个RESTful API
目录 背景 创建 SpringBoot 项目/模块 SpringBoot pom.xml api pom.xml 创建 RESTful API 应用 @SpringBootApplication @C ...
- Yii2框架RESTful API教程(一) - 快速入门
前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RE ...
- RESTful API & Swagger入门
什么是RESTful API? 原文地址:https://blog.csdn.net/hjc1984117/article/details/77334616 Swagger入门教程 https://w ...
- MongoDB最简单的入门教程之五-通过Restful API访问MongoDB
通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到MongoDB中,并通过MongoDB Compass查看到了 ...
- Spring Boot入门系列(二十)快速打造Restful API 接口
spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...
- 带你入门带你飞Ⅱ 使用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 ...
- Spring Boot入门系列(二十一)如何优雅的设计 Restful API 接口版本号,实现 API 版本控制!
前面介绍了Spring Boot 如何快速实现Restful api 接口,并以人员信息为例,设计了一套操作人员信息的接口.不清楚的可以看之前的文章:https://www.cnblogs.com/z ...
- Spring Boot 入门系列(二十二)使用Swagger2构建 RESTful API文档
前面介绍了如何Spring Boot 快速打造Restful API 接口,也介绍了如何优雅的实现 Api 版本控制,不清楚的可以看我之前的文章:https://www.cnblogs.com/zha ...
- Yii2框架RESTful API教程(二) - 格式化响应,授权认证和速率限制
之前写过一篇Yii2框架RESTful API教程(一) - 快速入门,今天接着来探究一下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分 一.目录结构 先列出需要改动的文件.目录如下 ...
随机推荐
- WPF实战案例-MVVM模式下在Xaml中弹出窗体
相信很多学习和开发wpf项目的同学都了解过mvvm模式,同样,在mvvm模式下会有一个不可忽视的问题,就是怎么在xaml中弹出窗体,而不破坏MVVM本身的结构. 关于弹出窗体的方式还是很多的,本文先讲 ...
- 使用 DotNetty 实现 Redis 的一个控制台应用程序
零:Demo 跑出来的结果如图 上图说明 图中左边蓝色的命令行界面,是用windows powershell 命令行链接的. 1.打开powershell命令行界面,输入命令[telnet 127 ...
- Spring AOP 源码分析 - 创建代理对象
1.简介 在上一篇文章中,我分析了 Spring 是如何为目标 bean 筛选合适的通知器的.现在通知器选好了,接下来就要通过代理的方式将通知器(Advisor)所持有的通知(Advice)织入到 b ...
- 通过Yum快速部署LAMP与LNMP
LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网 ...
- jdk在Linux下的安装
之前学linux的时候,也是赶鸭子上架,照着教程一步一步的走,但是今天linux出现了点问题重装一下 重新学习一些linux下常需软件的安装 一般我们再装完系统后,装的匆忙,先把ip搞出来 切换到该目 ...
- 微信小程序报Cannot read property 'setData' of undefined的错误
最近在学习微信小程序的开发,让我吐槽的是,都9102年了,怎么还是有有时不能复制,有时不能打中文的bug呢,这个时候,你可以Ctrl+shift+w一下,如果还不行,那就得重启了.. 进入正题吧,刚在 ...
- XAMPP中MySQL无法启动解决办法
如图 问题出在mysql的路径上,其实报错已经讲得听清楚了 预期应该是这样 结果却是这样 所以解决办法当然就是修改这个路径,出现这个报错原因大多因为之前电脑装过mysql,所以电脑默认启动是原来的my ...
- 剑指offer四之重建二叉树
一.题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...
- (转)【学习笔记】通过netstat+rmsock查找AIX端口对应进程
原文:http://www.oracleplus.net/arch/888.html https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_72 ...
- spring-如何将spring源码成功导入Eclipse中
一.从 github上下载Spring源码到本机 二.利用 Gradle 编译 Spring 源码 环境: - Spring源码版本:spring-framework-4.3.x - Gradle版本 ...