我正在cakephp 2.9中创建一个Web应用程序。它有两个用途,
目前我正在开发api部分,我创建一个webserviceController.php文件并编写所有的Api,现在我觉得控制器太胖了, 我不知道哪种是管理API的最佳做法。现在我的webservice控制器有超过2000行代码..
现在我计划在不同的控制器中分离每个api 谁能建议我在cakephp中编写apis的好习惯
目前我的代码看起来像
class WebServicesController extends Controller
{
public $uses = null;
public $components = array('RequestHandler', 'Verification', 'AppContstant','PushNotification');
public function users()
{
//code to get users
//
$this->set(array(
'result' => $result,
'_serialize' => 'result'
));
}
和我的route.php
Router::mapResources('WebServices');
Router::parseExtensions();
Router::resourceMap(array(
array('action' => 'users', 'method' => 'GET', 'id' => false),
我在webserviceController中有大约43个api,
答案 0 :(得分:1)
在cakephp中制作API的最简单方法是直接从控制器打印JSON并通过die()停止渲染。
官方文档建议您为输出提供API视图,这是一种标准的MVC方式,是一种很好的做法。您可以在此处查看更多信息:https://book.cakephp.org/2.0/en/views/json-and-xml-views.html
也许你可以参考Croogo如何实现它,这是一个基于Cakephp的CMS。 他们将API作为管理版本和方法的组件:https://github.com/croogo/croogo/blob/master/Croogo/Controller/Component/BaseApiComponent.php 这是其URL路由的示例,格式为/$version/$model/$method.$format/?$parameters http://www.example.com/croogo-2.2.2/api/v1.0/nodes/lookup.json?type=page&title=how
答案 1 :(得分:1)
Sibin Francis,您可以使用rest api类并包含在您的api控制器中 在顶部添加以下行
App::import('Vendor', 'REST', array('file' => 'Rest.inc.php'));
Public function yourFunctionName() {
if ($this->request->is("post")) { // Use your method name put/post/get/etc
$rest = new REST();
// Your logic here
return $rest->response(json_encode($data), response_code);
}
}
非常简单易行。只需要调用供应商Rest Api类。