我有一个简单的CakePHP应用程序,允许用户创建和编辑帖子.而且我希望将来在某个时候将应用程序应用到PhoneGap中.
因此,我创建了一个API,用于在AJAX请求中使用JSON,但我觉得我做错了,因为我没有使用REST或做任何不同的事情,这使得它与控制器中的其他代码区别开来.
例如(注意:我在这个例子中缺少关于将其转换为JSON的部分)
class ApiController extends AppController {
function index() {
$posts= $this->Post->find('all');
$this->set(compact('posts'));
}
}
Run Code Online (Sandbox Code Playgroud)
要创建一个像:( domain.com/api/posts/all将创建自定义路由以实现此目的),然后我可以使用AJAX在我的移动应用程序中使用它.
现在我的问题是使用REST做什么不同呢?我是构建应用程序的新手,我的优势在于前端而不是后端开发,所以任何指针,对此的帮助将非常感激.
在 CakePHP 中打开 REST 基本上会将正确的 HTTP 方法路由到操作。因此,GET 请求将被路由到索引或查看操作,DELETE 请求将被路由到删除操作,等等。
这为使用您的 API 的人们创建了一个非常简单的端点。然后,当调用此端点时,根据 HTTP 方法 Cake 将其路由到正确的操作(请原谅任何 HTTP 请求语法错误):
// single endpoint
http://example.com/api/posts
Run Code Online (Sandbox Code Playgroud)
路由到 /posts/index.json 的 GET 请求
GET /api/posts.json HTTP/1.1
Host: example.com
Run Code Online (Sandbox Code Playgroud)
路由到 /posts/edit/1.json 的 POST 请求
POST /api/posts/1.json HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 24
data[Post][name]=updated
Run Code Online (Sandbox Code Playgroud)
阅读本文将回答您的大部分问题:http://book.cakephp.org/2.0/en/development/rest.html