# 知识参考资料
>关于restful介绍,百度
官方文档[ThinkPHP5快速入门
之 API开发](https://www.kancloud.cn/thinkphp/thinkphp5_quickstart/160681)
# 开发流程及步骤
thinkphp开发restful,主需要两步
* 第一 按规范要求 控制器中写好对应7个方法 【返回必须为json】
* 第二 路由中,对应控制器开发资源路由,实例如下
>[warning] 其它 控制需要注意问题,处理空操作,异常,防止暴露系统信息
# 基本配置
* 项目目录结构
~~~
www WEB部署目录(或者子目录)
├─apps 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─api 模块目录
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ └─ ... 更多类库目录
│ │
│ ├─command.php 命令行定义文件
│ ├─common.php 公共函数文件
│ └─tags.php 应用行为扩展定义文件
│
├─config 应用配置目录
│ ├─api 模块配置目录
│ │ ├─database.php 数据库配置
│ .........
├─route 路由定义目录
│ ├─route.php 路由定义
│ └─... 更多
~~~
## 引导入口文件
* 引导文件 index.php
~~~
<?php
use think;
// 定义应用目录
define('APP_PATH', __DIR__ . '/apps/');
// 绑定到index模块
define('BIND_MODULE', 'api/index');
// 加载框架引导文件
require __DIR__ . '/thinkphp/base.php';
// 执行应用并响应
Container::get('app', [APP_PATH])->run()->send();
~~~
* route\route.php文档配置
~~~
<?php
return [
'__rest__' =>[
'api' => 'api/restful',
]
];
~~~
## 应用开发
controller/Restful.php 接口控制器
>[info]建议文件使用系统自带命令行进行自动生成
`php think make:controller api\Restful`
* api/controller/Restful.php
~~~
<?php
namespace app\api\controller;
use think\Controller;
use think\Request;
/*
* 最基本是简化操作,直接与数据库中表进行一一对应
*/
class Restful extends Controller
{
/**
* 显示资源列表
*
* @return \think\Response
*/
public function index()
{
// abort(404,'index error');
return json(['name'=>'index','data'=>input()]);
}
/**
* 显示创建资源表单页.
*
* @return \think\Response
*/
public function create()
{
//
return json(['name'=>'create','data'=>input()]);
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
//
return json(['name'=>'index','data'=>$request->post()]);
}
/**
* 显示指定的资源
*
* @param int $id
* @return \think\Response
*/
public function read($id)
{
// dump(config());
//
// abort(404,'index error');
return json(['name'=>'read','id'=>$id,'data'=>input()]);
}
/**
* 显示编辑资源表单页.
*
* @param int $id
* @return \think\Response
*/
public function edit($id)
{
//
return json(['name'=>'edit','id'=>$id,'data'=>input()]);
}
/**
* 保存更新的资源
*
* @param \think\Request $request
* @param int $id
* @return \think\Response
*/
public function update(Request $request, $id)
{
//
return json(['name'=>'update','id'=>$id,'data'=>input()]);
}
/**
* 删除指定资源
*
* @param int $id
* @return \think\Response
*/
public function delete($id)
{
return json(['name'=>'delete','id'=>$id,'data'=>input()]);
//
}
}
~~~
## 测试
浏览器
http://127.0.0.1/xxxx/index.php/api
测试工具,建议如官方文档[ThinkPHP5快速入门
之 API开发](https://www.kancloud.cn/thinkphp/thinkphp5_quickstart/160681)
* 使用专用postman,
* 浏览 F12,控制台使用jquery [*默认浏览器,主要测试get方式*]
* 借助于php Guzzle库[使用Guzzle进行API测试](http://www.php1024.com/posts/15.htm)
- 文档说明
- 5.1对比5.0.X版本需要注意点
- 待解答问题QA
- THINKPHP基础
- 常用技巧
- tp5.1系统信息
- 容器、Facade、依赖注入
- 其它要点记录
- 数据库与模型
- 数据集
- AQ问题集
- API开发
- restful开发
- restful测试之ZClient开发
- api开发
- 缓存
- 组件开发
- 采集组件ZSnoopy
- restful测试组件ZClient
- thinkphp各功能模块
- thinkphp-Log
- 队列thinkphp-Queue
- THINKPHP扩展
- 单元测试
- 类库库迁移工具Migration
- 命令行
- 关于console扩展要点
- 附录
- 第三方实用PHP库
- 实用IP库
- phpQuery库
- Guzzle库
- Markdown解释库Parsedown
- 上线的项目debug组件
- nette/utils实用函数库
- 推荐框架DolphinPHP
- Thinkphp之widget
- 表单组件form
- 前端框架推荐
- 推荐框架fastadmin
- PHP7最新语法
- 前端框架
- Echart
- mysql触发器
- PHP实用技巧与函数
- composer实用笔记