前面,我们已经准备好 Output 类,本章接着讲如何调用 Output 类来实现基础示例接口。
「PHP开发APP接口实战004」响应参数基础说明
「PHP开发APP接口实战005」基础示例接口的实现一
一. 基类控制器 BaseController
BaseController 类是所有接口控制器的基类。主要实现验证签名,身份认证等一些公共操作。
在 /app/controllers 目录下创建一个基类控制器 BaseController.php,基类控制器继承自Phalcon\Mvc\Controller
。 并创建一个初始化函数 initialize()
<?php
use Phalcon\Mvc\Controller;
class BaseController extends Controller
{
// 初始化的函数
public function initialize()
{
}
}
Phalcon\Mvc\Controller
中提供了初始化函数initialize()
,它是最先执行的,并且会优先于任何控制器的其他action。
参考资料
二. 实现基础示例接口控制器 IndexController
- 在 /app/controllers 目录下创建控制器 IndexController.php,继承BaseController, 并创建初始化函数
initialize()
<?php
class IndexController extends BaseController
{
// 初始化的函数
public function initialize()
{
parent::initialize();
}
}
- 添加函数
indexAction()
, 实现返回字符串数据接口示例。接口地址:http://127.0.0.1:20081/index/
public function indexAction()
{
Output::instance($this->response)->success('Hello World.');
}
注意:
$this->response
是Phalcon\Mvc\Controller
内置的控制器响应实例参数。这里将其传给了Output
类。
接口返回结果:
{
"status": "1",
"value": "Hello World."
}
- 添加函数
itemAction()
, 实现返回对象数据接口示例。接口地址: http://127.0.0.1:20081/index/item
public function itemAction()
{
$item = ['id' => 1, 'name' => 'item1'];
Output::instance($this->response)->success((object)$item);
}
这里先创建了一个数组对象 $item = ['id' => 1, 'name' => 'item1']
,再将 $item
强转为 Object
, 并传给函数 success()
。
注意:必须将数组对象强转为 Object 。接口才能正常返回对象数据。
接口返回结果:
{
"status": "1",
"item": {
"id": "1",
"name": "item1"
}
}
- 添加函数
listAction()
, 实现返回列表数据接口示例。接口地址: http://127.0.0.1:20081/index/list
public function listAction()
{
$items = [
['id' => 1, 'name' => 'item1'],
['id' => 2, 'name' => 'item2'],
['id' => 3, 'name' => 'item3'],
];
$list = [
'page' => 1,
'limit' => 10,
'count' => 3,
'items' => $items,
];
Output::instance($this->response)->success($list);
}
列表数据接口主要用于返回列表数据,如果有分页,需要返回
page 当前页码 , limit 分布大小, count 数据总条数
等分页参数。
接口返回结果:
{
"status": "1",
"list": {
"page": "1",
"limit": "10",
"count": "3",
"items": [
{
"id": "1",
"name": "item1"
},
{
"id": "2",
"name": "item2"
},
{
"id": "3",
"name": "item3"
}
]
}
}
- 添加函数
errorAction()
, 实现返回错误数据接口示例。接口地址: http://127.0.0.1:20081/index/error
public function errorAction()
{
Output::instance($this->response)->fail('错误来啦', 300);
}
接口返回结果:
{
"status": "0",
"error_code": "300",
"error_message": "错误来啦"
}
- 添加函数
exceptionAction()
, 自动捕获异常并返回异常信息接口示例。接口地址: http://127.0.0.1:20081/index/exception
在前面的章节里我们已经讲了自定异常处理方法。
「PHP开发APP接口实战003」自定义异常处理
public function exceptionAction()
{
throw new Exception('异常消息');
}
为了演示,这里直接抛出异常。我们还可以结合
try{} catch{}
来处理异常信息。
接口返回结果:
{
"status": "0",
"error_code": "300",
"error_message": "异常消息",
"track": "D:\\Fox\\Demo\\API\\app\\controllers\\IndexController.php, line : 47"
}
IndexController.php 完整代码
<?php
class IndexController extends BaseController
{
// 初始化的函数
public function initialize()
{
parent::initialize();
}
public function indexAction()
{
Output::instance($this->response)->success('Hello World.');
}
public function itemAction()
{
$item = ['id' => 1, 'name' => 'item1'];
Output::instance($this->response)->success((object)$item);
}
public function listAction()
{
$items = [
['id' => 1, 'name' => 'item1'],
['id' => 2, 'name' => 'item2'],
['id' => 3, 'name' => 'item3'],
];
$list = [
'page' => 1,
'limit' => 10,
'count' => 3,
'items' => $items,
];
Output::instance($this->response)->success($list);
}
public function errorAction()
{
Output::instance($this->response)->fail('错误来啦', 300);
}
public function exceptionAction()
{
throw new Exception('异常消息');
}
}
示例代码下载:
链接:https://pan.baidu.com/s/1dGWUpk1 密码:mmt7