我尝试使用AbstractRestfulController。我创建了控制器类:
class MyController extends AbstractRestfulController{
public function getList(){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function get($id){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function create($data){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function update($id, $data){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function delete($id){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
}
和路由:
return array(
'router' => array(
'routes' => array(
'mylink' => array(
'type' => 'Segment',
'options' => array(
'route' => '/mylink[/:id]',
'constraints' => array(
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'MyModule\Controller\My',
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'MyModule\Controller\My' => 'MyModule\Controller\MyController',
),
),
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
);
但是当用户调用错误的方法或错误的id或其他任何内容时会发生什么?我想自己处理。怎么做?
答案 0 :(得分:3)
您的api仍应以请求的格式(json,xml等)返回响应,通常包含一些描述问题的错误代码/消息,以及相应的http响应代码。您可以告诉消费者您的api预期的响应是什么,但是当他们弄错时,由他们来处理它。
从这个角度来看,这是一个设置响应并使用相关信息填充模型以返回的简单案例,典型的响应可能如下所示......
public function get($id)
{
// some processing to find id ...
// no id found
if (!$found) {
// set 404 Not Found response
$this->getResponse()->setStatusCode(404);
// return message to client
return new JsonModel(array(
'error' => 404,
'reason' => sprint_f('Requested id "%s" not found', $id'),
));
}
}
显然,对其他方法也一样,并尝试使用适当的HTTP response code