# 知識參考資料
>關于restful介紹,百度
官方文檔[ThinkPHP5快速入門
之 API開發](http://www.hmoore.net/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開發](http://www.hmoore.net/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實用筆記