# restful api
[TOC]
>[success] restful是一种软件设计风格,主要用于客户端与服务器端的交互,一般来说restful基于http/https协议,通过某一个唯一标识符(URI)请求对应的服务器资源
![](https://i.loli.net/2019/03/22/5c9474e7ad430.png)
## restful作用
>[info] 为前端(APP端/PC浏览器端/微信端等等)提供一套简单并且统一的请求方式来从后端(服务器)获取需要的数据
> 提供接口的方式:基于http/https协议
> 返回接口数据的形式主要为:JSON和XML
## 资源路径
在restful api中每个资源路径都对应一个唯一的资源,所以规定网站不能有动词,只能有名词,并且一般来说为重数
```
http://api.local.com/api/v1/movies----表示电影资源 get获取多条记录 post 添加
http://api.local.com/api/v1/images/1 ----表示图片资源 获单条 修改 删除 get put delete
```
## Http动词
```
POST /articles -- 创建文章内容
GET /articles -- 获取全部
GET /articles/1 -- 获取主键id为1的文章
PUT /articles/1 -- 修改参数为1的文章
DELETE /articles/1 -- 删除参数为1的文章
...
协议还有很多,常用的就增删改查
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
这二个个不常用,但是也要记住下,也是比较有用的
```
## 过滤信息
如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。
下面是一些常见的参数。
```
limit=10:指定返回记录的数量
offset=10:指定返回记录的开始位置。
page=2&per_page=100:指定第几页,以及每页的记录数。
sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
animal_type_id=1:指定筛选条件
```
参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?zoo\_id=ID 的含义是相同的。
## 状态码
| 状态码 | 含义 | 说明 |
| --- | --- | --- |
| 200 | OK | 操作成功, 并返回数据 get |
| 201 | CREATED | 新建成功 post |
| 202 | Accepted | 修改成功 put |
| 204 | NO CONTENT | 删除成功 delete |
| 400 | BAD REQUEST | 请求语法错误 |
| 403 | Forbidden | 请求没有权限的资源 |
| 5xx | | 服务器端错误 |
- 基础
- 安装PHP
- 语言基础
- 变量
- 变量操作
- 超全局数组变量
- 变量作用域
- 变量传值方式
- 常量
- 数据类型
- 运算符
- 流程控制
- 文件包含
- 错误处理
- 字符串操作
- 数组
- 函数
- 进阶
- 面向对象
- 提高
- TP
- 安装项目
- 框架基础知识
- 命令创建模块
- URL生命周期
- 路由操作
- Request请求类
- 参数绑定
- 依赖注入
- 模板操作
- 查询操作
- 添加操作
- laravel
- ☆目录结构
- CSRF攻击
- ☆路由
- ☆控制器
- ☆请求类
- ☆视图
- ☆模板继承
- ☆表单验证
- ☆DB类
- ☆模型
- ☆数据库迁移
- 类型、修饰、索引
- ☆数据填充
- ☆数据分页
- ☆session处理
- ☆中间件
- ☆缓存操作
- ☆文件上传
- ☆接口操作
- ☆扩展插件
- restful
- 工作
- 工作记录
- QQ登录
- 新浪登录
- 微信登录
- sphinx搜索
- 数据库
- MySQL
- ☆数据库操作
- ☆数据表操作
- ☆数据的操作
- 待修改
- 优化
- 存储引擎选择
- 列表类型选择
- 范式
- 慢日志查询
- 精准时间记录查询
- 计划任务 explain
- 索引
- 索与事务
- 查询缓存
- 存储过程
- 触发器
- 分区
- 分表
- sphinx
- 读写分离
- 搜索优化
- 网站静态化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服务器
- Linux
- 目录结构
- 常用命令
- VIM编辑器
- 用户与用户组
- 权限管理
- 运行级别
- 网络模式
- ssh
- 软件安装
- 计划任务
- Ubuntu
- 编译PHP7.3
- 编译MySQL
- 编译Nginx
- apache虚拟机配置
- 安装composer
- Nginx
- Git