[TOC]
# 編寫API接口
## 控制器
> 創建Book控制器`app/controller/Book.php`
輸入控制器的內容,通過Db類的靜態方法檢索數據庫表book中的全部記錄并以json格式輸出。
> 我們編寫前后端分離的接口程序都以json格式返回數據結果。
~~~
<?php
namespace app\controller;
use app\BaseController;
use think\facade\Db;
class Book extends BaseController
{
public function getBookList()
{
// 獲取數據集
$books = Db::name('book')->select();
$response = [
'errno' => 0,
'errmsg' => '',
'data' => $books
];
return json($response);
}
public function getBookInfo($id=0)
{
$book = Db::name('book')->where(['id'=>$id])->find();
if ($book){
$response = [
'errno' => 0,
'errmsg' => '',
'data' => $book
];
}else{
$response = [
'errno' => 1000,
'errmsg' => '沒有滿足條件的數據',
'data' => null
];
}
return json($response);
}
}
~~~
代碼說明:
門面為容器中的(動態)類提供了一個靜態調用接口,相比于傳統的靜態方法調用, 帶來了更好的可測試性和擴展性,你可以為任何的非靜態類庫定義一個`facade`類。
## 使用RESTer工具測試接口
在FireFox瀏覽器中安裝RESTer擴展插件,啟動插件輸入
~~~
http://localhost:8000/index.php?s=book/getBookInfo/id/1
~~~

如圖所示,我們看到檢索到的數據以JSON對象的形式返回。
~~~
{
"errno": 0,
"errmsg": "",
"data": {
"id": 1,
"title": "ThinkPHP 5框架原理與實戰 ",
"author": "黑馬程序員",
"publisher": "中國鐵道出版社",
"pub_year": 2019,
"isbn": "9787113259716",
"price": "55.00"
}
}
~~~