# RESTful 路由
REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST提出了一些设计概念和准则:
1. 网络上的所有事物都被抽象为资源(resource);
2. 每个资源对应一个唯一的资源标识(resource identifier);
3. 通过通用的连接器接口(generic connector interface)对资源进行操作;
4. 对资源的各种操作不会改变资源标识;
5. 所有的操作都是无状态的(stateless)
资源控制器可让你无痛建立和资源相关的 RESTful 控制器。例如,你可能希望创建一个控制器,它可用来处理针对你的应用程序所保存相片的 HTTP 请求。
[TOC]
## 使用
#### 创建资源控制器
```
php hd make:controller home.photo resource
```
#### 设置路由规则
我们注册一个指向此控制器的资源路由:
```
Route::resource('photo', 'home/photo');
```
此单一路由声明创建了多个路由,用来处理各式各样和相片资源相关的 RESTful 行为。同样地,产生的控制器已有各种和这些行为绑定的方法,包含用来通知你它们处理了那些 URI 及动词。
## 说明
#### 路由说明
由资源控制器处理的行为
```
动词 路径 行为
GET /photo 索引
GET /photo/create 创建
POST /photo 保存
GET /photo/{photo} 显示
GET /photo/{photo}/edit 编辑
PUT /photo/{photo} 更新
DELETE /photo/{photo} 删除
```
#### 代码
```
namespace app\home\controller;
class Photo{
//GET /photo 索引
public function index(){
echo 'index';
}
//GET /photo/create 创建界面
public function create(){
echo 'create';
}
//POST /photo 保存新增数据
public function store(){
echo 'store';
}
//GET /photo/{photo} 显示文章
public function show($id){
echo 'show';
}
//GET /photo/{photo}/edit 更新界面
public function edit($id){
echo 'edit';
}
//PUT /photo/{photo} 更新数据
public function update($id){
echo 'update';
}
//DELETE /photo/{photo} 删除
public function destroy($id){
echo 'destroy';
}
}
```
#### 伪造方法
由于HTML表单不能发起PUT、PATCH和DELETE请求,需要添加一个隐藏的 _method 字段来伪造HTTP请求方式,辅助函数 method_field 可以帮我们做这件事:
```
{{ method_field('PUT') }}
```
系统会生成表单
```
<input type="hidden" name="_method" value="PUT"/>
```
- 文档已经迁移到后盾人
- 介绍
- 框架特性
- 开发规范
- 许可协议
- 作者向军
- 安装框架
- 更新框架
- 基础
- 入口文件
- 应用配置
- 优雅链接
- 目录结构
- 系统常量
- 自动加载
- 应用密钥
- 系统函数
- CSRF保护
- 依赖注入
- 跨域访问
- 配置
- 配置文件
- 基本功能
- 扩展配置
- c 函数
- 控制器
- 定义声明
- 基本使用
- 相关函数
- 响应消息
- 路由
- 基础知识
- 基础路由
- 路由参数
- 参数检测
- 依赖注入
- 控制器
- 分组路由
- RESTful
- 别名路由
- 数据
- 配置相关
- 核心操作
- 查询构造器
- 日志记录
- 分页处理
- 事务处理
- 函数相关
- 数据库
- 数据迁移
- 数据填充
- 模型
- 定义模型
- 模型动作
- 模型验证
- 自动完成
- 自动过滤
- 字段保护
- 数据填充
- 多表关联
- 分页处理
- 仓库
- 数据仓库
- 查询规则
- 视图
- 基础知识
- 模板配置
- 模板文件
- 分配数据
- 系统标签
- 扩展标签
- 缓存模板
- 模板继承
- 视图函数
- widget
- vue组件
- 中间件
- 中间件
- 缓存
- 基本操作
- 文件缓存
- 数据表缓存
- 服务
- 服务容器
- 定制服务
- 相关函数
- 请求
- 基本使用
- 请求扩展
- 测试
- 基础知识
- 基本使用
- HTTP测试
- 调试
- 调试模式
- 日志管理
- 组件
- 多语言
- 响应处理
- Cookie
- Session
- 验证码
- XML
- 自动验证
- 文件处理
- 压缩解压
- RBAC
- 数组增强
- 分页管理
- 图像处理
- 生成静态
- 加密解密
- 字符串
- 数据集合
- 工具服务
- 目录操作
- 邮件发送
- CURL
- QQ登录
- 数据备份
- 购物车
- 日志处理
- 命令组件
- 二维码
- 后盾云
- 日期处理
- 阿里
- 支付宝
- 阿里云直播
- 阿里云短信
- 阿里云邮件
- 阿里云OSS
- SOCKET
- 启动与关闭
- 前端
- 微信